숫자의 표현

Jobmania·2022년 11월 15일
0

링크

연속된 자리 수의 합이 입력한 숫자와 같은 횟수를 출력하는 문제이다.

이중 for문을 통해 풀 수도 있다. 최대한 반복횟수를 줄이기 위해서 주어진 숫자보다 초과를 한다면 break를 발생..

1부터 시작한다면 +2+3.. 나오지 않는 조건에 많은 반복횟수가 생기기때문에 높은 숫자부터 시작해 아래로 내려가는 것이 반복횟수를 줄일 수 있다고 생각한다.

ex)1부터시작경우 n =5 / 답은 2개 / 같거나 초과시 Break
1) 1+2+3 / 5,O 3번
2) 2+3/ 5, O 2번
3)3+4 / 7, X 2번
4) 4+5 / 9, X 2번
5) 5 / 5, O 1번
반복횟수 10번

ex)5에서 시작할 경우 / n =5 / 답은 2개
1) 5/ 5,O 1번
2) 4+3 / 7, X, 2번
3) 3+2+1/ 5, O, 3번
4) 2+1 / 3,X,2번
5)1 /1,X 1번
반복횟수 9번

        public int solution(int n) {
        int totalNum = 0;
        int count = 0;
        
        int i = n;
        while(i > 0){
           for(int j = i ; j > 0; j--){
               totalNum += j;
               if(totalNum==n){    // n과 같다면 for 문 나오기..
                   count++;
                   totalNum =0;
                   break;
               }
               if(totalNum>n){   //  초과시 for문 나오기..
                   totalNum=0;
                   break;
               }
               if(j==1){            // 끝까지 갔을때 totalNum 초기화.
                   totalNum = 0;
               }
           }
            i--;
        }
        return count;
    }
profile
HelloWorld에서 RealWorld로

0개의 댓글