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
'자바 > 코딩테스트' 카테고리의 다른 글
[프로그래머스] 카펫 - Java(자바) (0) | 2024.03.25 |
---|---|
[프로그래머스] 짝지어 제거하기 - Java(자바) (0) | 2024.03.25 |
[프로그래머스] 올바른 괄호 - Java(자바) (0) | 2024.03.25 |
[백준] 좋은 암호 - Java(자바) (0) | 2024.03.23 |
[백준] 집 주소 - Java(자바) (0) | 2024.03.23 |