자바/코딩테스트

[프로그래머스] 숫자의 표현 - 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