정답은 전부 연속된 자연수이므로 right 포인터는 항상 반복문의 i (맨 끝) 위치이다.
1부터 n까지 하나씩 더하면서 합을 구하고, 그 합이 n과 같다면 result 값을 늘려주고,
그 합이 n보다 커지면 left 포인터를 한 칸씩 앞으로 당겨오면서 그 값을 빼준다.
1. 전체 코드
// [프로그래머스] 숫자의 표현 (Java)
class Solution {
public int solution(int n) {
int answer = 0;
int left = 0;
int sum = 0;
for(int i = 1; i <= n; i++){
sum += i;
// 범위에서 벗어나면 앞에서부터 줄여나가면서 범위에 맞춤
while(sum > n){
sum -= left;
left++;
}
// 정답 찾을때 마다 ++
if(sum == n){
answer++;
}
}
return answer;
}
}