자바/코딩테스트
[프로그래머스] 숫자의 표현 - Java(자바)
대전집주인
2024. 3. 25. 13:27
728x90
SMALL
문제 이해
- 자연수 n 표현하는 자연수들의 개수를 구하여라(단 연속된 자연수로)
- 1 ~ n 까지의 자연수의 연속된 합이 n이 되는 경우를 구한다.
- 배열에 1 ~ n까지 값을 세팅
- 1 부터 n까지 값을 더하면서 sum이 n과 같으면 answer++
- sum 이 n보다 작으면 sum에서 left인덱스 위치의 값을 빼고 left index를 증가시킨다.
- sum 이 n보다 크면 sum에서 right인덱스 위치의 값을 더하고 right index를 증가시킨다.
- 배열을 다 소모하기전까지 반복
class Solution {
public int solution(int n) {
int answer = 0;
int[] numList = new int[n];
for(int i = 0; i<n; i++){
numList[i] = i+1;
}
int left = 0;
int right = 1;
int sum = numList[0];
while(left < n){
if(sum == n){
sum -= numList[left++];
answer++;
}else if(sum > n){
sum -= numList[left++];
}else if(sum < n){
sum += numList[right++];
}
}
return answer;
}
}
728x90
LIST