# 프로그래머스 : 숫자의 표현 (Level 4)
[문제]
(1+2+3+4+5)
(4+5+6)
(7+8)
(15)
로 총 4가지가 존재합니다. 숫자를 입력받아 연속된 수로 표현하는 방법을 반환하는 expressions 함수를 만들어 민지를 도와주세요. 예를 들어 15가 입력된다면 4를 반환해 주면 됩니다.
[풀이]
문제는 사실 매우 간단하다.
- 1부터 차례대로 수를 증가하면서 연속된 자연수의 합이 주어진 수와 일치하면 카운트 증가
- 연속된 자연수의 합이 주어진 수보다 크면 중단
- 1부터 차례대로 최대 주어진 수까지만 증가
이를 코드로 표현하면 다음과 같다.
int expressions(int testCase)
{
int answer = 0;
int sum = 0;
for(int i=1; i<testCase; i++) {
sum = 0;
sum += i;
for(int j=i+1; j<testCase; j++) {
sum += j;
if(sum == testCase) {
answer++;
break;
}
else if(sum > testCase) {
break;
}
}
}
return answer+1;
}
레벨 4의 문제라서 어려울 줄 알았는데, 예상외로 굉장히 빠르게 풀었던 문제였다.
댓글
댓글 쓰기