문제 설명
자연수 n을 연속한 자연수들로 표현하는 방법의 수를 return
https://school.programmers.co.kr/learn/courses/30/lessons/12924
문제 풀이법
이중 for문을 통해 문제를 풀 수 있다
바깥의 for문은 총 n번을 반복하는 것이고, 안쪽의 for문은 i를 초기값으로 가지기에 n - i 번을 반복하는 것이다
즉, 만일 n이 15, i가 12라면 3번 반복하는 것이다
연속하는 자연수를 찾기 위해서 이렇게 해두었다
i가 1이고, n이 15라면 1, 2, 3.....15까지 더하는 과정을 진행하고, 다음 i가 2가 되면 2, 3, 4.....15까지 더하는 과정을 반복하는 로직이다
이때 만일 더한 값이 n과 같다면 for문을 빠져나오게 했다
else if문으로 더한 값이 n보다 크다면 이때도 for문을 빠져나오게 했는데, 이걸 하지 않으면 효율성 테스트를 통과하지 못한다
소스 코드
#include <string>
#include <vector>
using namespace std;
int solution(int n) {
int answer = 0;
for (int i = 1; i <= n; i++) {
int tmp = 0;
for (int j = i; j <= n; j++) {
tmp += j;
if (tmp == n)
break ;
else if (tmp > n)
break ;
}
if (tmp == n)
answer++;
}
return answer;
}
'Algorithm Study' 카테고리의 다른 글
[프로그래머스] 2단계 - 피보나치 수 (0) | 2023.12.28 |
---|---|
[프로그래머스] 2단계 - 다음 큰 숫자 (0) | 2023.12.28 |
[프로그래머스] 2단계 - 올바른 괄호 (0) | 2023.12.27 |
[프로그래머스] 2단계 - 최솟값 만들기 (0) | 2023.12.27 |
[프로그래머스] 2단계 - JadenCase 문자열 만들기 (0) | 2023.12.27 |