[코테/JAVA] 연습문제 : 숫자의 표현

    728x90
    반응형

    2022.12.19

    코테 문제풀이 23주차 01번 문제

     

     

    문제

      ① 연습문제 : 숫자의 표현

     

      ② 링크

     

    프로그래머스

    코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

    programmers.co.kr

     

     

    접근방법

      생각해낸 방법은 1가지

      ① 2개 이상의 연속된 자연수의 합에서 자연수의 최댓값은 (n/2)+1

     

     

    풀이

      ① 접근방법 :

      ② 풀이

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    class Solution {
        /* 
         * Date: 2022-12-16
         * Time: 13:29
         */
        public int solution(int n) {
            return srchLinkedNumber(n);
        }
     
        /*
         * 연속된 숫자의 합 찾기
         * @param n 대상숫자
         * @return int 연속된 숫자의 합이 대상숫자와 같은 케이스
         
         * 1. 시작숫자가 될 수 있는 최댓값은 홀수: (대상숫자/2)+1, 짝수: (대상숫자/2)
         * 2. 반복문을 한 번 볼때마다 1을 빼면서 합계에 더한다.
         * 3. 조건에 부합하면 카운트한다.
         * 4. 조건에 맞지 않으면 최댓값을 1씩 내리면서 다시 1번부터 반복한다.
         */
        public int srchLinkedNumber(int n) {
            if (n == 1return 1;
     
            int cnt = 1, sum = 0;
            int num = n%2 == 1 ? (n/2)+1 : n/2;
            int temp = num;
            while(true) {
                sum += temp;
                if (sum == n) {
                    num--;
                    temp = num;
                    cnt++;
                    sum = 0;
                }
                if (temp <= 0break;
                if (sum > n) {
                    num--;
                    temp = num;
                    sum = 0;
                }
                temp--;
            }
            return cnt;
        }
    }
    cs

     

     

    결과

     

     

    주의사항

      ① 테스트케이스 1번 실패

    728x90
    반응형

    댓글