프로그래머스 | Lv2. 숫자의 표현 (Java)

728x90

프로그래머스 | Lv2. 숫자의 표현 (Java)

문제 이미지

문제 풀이

  • n 은 10000 이하의 자연수 이므로, 이중 for문을 돌려도 시간 초과가 나지 않는다.
  • 바깥 for문으로 i = 1 ~ n까지 돌면서 연속된 자연수의 시작값을 세팅했다.
  • 안쪽 for문은 j = i+1 ~ n 까지 돌면서 tmp에 각 i 부터 시작되는 연속된 합을 더하다가
  • - 만약 tmp == 15 가 될 경우 cnt++, break;
  • - 만약 tmp > 15 초과할 경우 그냥 break; 되도록 조건을 걸어두었다.

코드

class Solution {
    public int solution(int n) {
        int cnt= 1;

        for(int i =1; i<=n; i++){
            int tmp = i;
            for(int j=i+1; j<=n; j++){
                tmp += j;
                if(tmp == n) {
                    cnt++;
                    break;
                }else if(tmp > n) {
                    break;
                }
            }

        }   
        return cnt;
    }

}
728x90