본문 바로가기

프로그래머스

정수 제곱근 판별 문제 설명 임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다. n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요. 제한 조건 n은 1이상, 50000000000000 이하인 양의 정수입니다. 입출력 예 n return 121 144 3 -1 입출력 예#1 121은 양의 정수 11의 제곱이므로, (11+1)를 제곱한 144를 리턴합니다. 입출력 예#2 3은 양의 정수의 제곱이 아니므로, -1을 리턴합니다. 문제 풀이 #include #include #include long long solution(long long n) { long long answer = 0; for(long long .. 더보기
x만큼 간격이 있는 n개의 숫자 문제 설명 함수 solution은 정수 x와 자연수 n을 입력 받아, x부터 시작해 x씩 증가하는 숫자를 n개 지니는 리스트를 리턴해야 합니다. 다음 제한 조건을 보고, 조건을 만족하는 함수, solution을 완성해주세요. 제한조건 x는 -10000000 이상, 10000000 이하인 정수입니다. n은 1000 이하인 자연수입니다. 입출력 예 x n answer 2 5 [2,4,6,8,10] 4 3 [4,8,12] -4 2 [-4,-8] 문제 풀이 #include #include using namespace std; vector solution(int x, int n) { vector answer; int temp = x; for (int i = 0; i < n; i++) { answer.push_ba.. 더보기
나머지가 1이 되는 수 찾기 문제 문제 풀이 int solution(int n) { int answer = 0; for(int i = 1; i < n; i++){ if(n%i == 1){ answer = i; } } return answer; } 처음에 for반복문을 통해 나머지가 1일 때만 answer에 나머지가 1이 되는 수를 출력하려 했다. 하지만 입력값이 10인 경우 9가 출력되어 가장 작은 자연수를 리턴하도록 해야했다. int solution(int n) { int answer = 0; for(int i = 1; i < n; i++){ if(n%i == 1){ answer = i; break; } } return answer; } break; 를 추가해 줌으로써 나머지가 1이 되는 가장 작은 자연수를 return하도록 하였다. 더보기
약수의 합 문제 문제 풀이 int solution(int n) { int answer = 0; for(int i=1; i 더보기
자릿수 더하기 문제 풀이 #include #include #include int solution(int n) { int answer = 0; while(n>0){ answer += n%10; n/=10; } return answer; } 1의 자릿수부터 소거하면서 더하도록 반복하였다. 더보기
짝수와 홀수 문제 나의 풀이 #include #include #include char* solution(int num) { // 리턴할 값은 메모리를 동적 할당해주세요 char* answer = (char*)malloc(10); if(num%2 == 0){ answer = "Even"; }else{ answer = "Odd"; } return answer; } if문을 사용하여 나머지가 0이면 Even, 그 외에는 Odd가 출력되도록 하였다. 메모리 할당을 잘 몰라서 10이란 숫자를 임의로 넣었다, 다른 사람 풀이 1 char* solution(int num) { return num%2==0 ? "Even":"Odd"; } 삼항연산자를 이용하면 더 깔끔하게 코딩이 가능하다. 다른 사람 풀이 2 char* soluti.. 더보기
배열의 평균값 문제 문제 풀이 #include #include #include // numbers_len은 배열 numbers의 길이입니다. double solution(int numbers[], size_t numbers_len) { double answer = 0; int sum = 0; int l = numbers_len; for(int i = 0; i < l; i++){ sum += numbers[i]; } answer = (double)sum/l; return answer; } 쉽게 생각해서 모든 수를 더해서 개수만큼 나눠주면된다. for 반복문을 이용하여 배열안의 모든 수를 더해준 다음 배열의 길이만큼 나눠주었다. 소수점 첫째자리까지 나오게 하기위해 double을 사용하였다. 더보기
[프로그래머스] 각도기 문제 나의 풀이 #include #include #include int solution(int angle) { int answer = 0; if(angle >0 && angle 90 && angle < 180 ) { answer = 3; } else if(angle == 180) { answer = 4; } return answer; } if, else if 조건문을 통해 예각, 직각, 둔각, 평각 을 나눠주었다. 다른 사람의 풀이 =#include #include #include int solution(int ang) { int ans = 1; return ang 더보기