리뷰
입력이 15일 때, 15 하나 자체도 표현 방법으로 친다.
그래서 answer 는 1로 초기화한다.
15를 2로 나눴을때의 몫 부터 연속된 수를 더해본다.
15를 2로 나눴을때의 몫은 7이다.
7부터 더해보고,
6부터 더해보고,
5부터 더해보고,
....
1부터 더해보고.
15/2 부터 1까지 누적 덧셈을 시도한다. 더하다가 n과 똑같아지면 카운팅한다.
맞았습니다 코드
#include <string>
#include <vector>
using namespace std;
int solution(int n) {
int answer = 1;
int start = n/2;
for(int i = start; i > 0; i--){ // start 부터 1 까지.
int sum = i, j = i+1; // 합을 저장할 sum, 더해줄 숫자 j
while(sum <= n){
sum += (j++);
if(sum == n) {answer++; }
}
}
return answer;
}
728x90
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 도둑질 c++ (0) | 2022.05.24 |
---|---|
[프로그래머스] 이진 변환 반복하기 c++ (0) | 2022.05.22 |
[프로그래머스] JadenCase 문자열 만들기 c++ (0) | 2022.05.22 |
[프로그래머스] 가장 큰 정사각형 찾기 c++ (0) | 2022.05.22 |
[프로그래머스] n^2배열자르기 (0) | 2022.05.19 |