반응형
Notice
Recent Posts
Recent Comments
Link
«   2025/12   »
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
Archives
Today
Total
관리 메뉴

욱꾸미의 주꾸미 발

[코딩테스트] 프로그래머스 - 124 나라의 숫자(Java, Level2) 본문

코딩테스트/프로그래머스

[코딩테스트] 프로그래머스 - 124 나라의 숫자(Java, Level2)

욱꾸미 2022. 12. 7. 23:12
반응형

안녕하세요.

오늘 풀어볼 문제는 124 나라의 숫자입니다.

이번 문제는 for문으로 1~n까지 다 구하는 식으로 했다가 시간초과로 실패하고

다시 재귀로 수정하며 푼 문제입니다.

 

문제링크입니다.

https://school.programmers.co.kr/learn/courses/30/lessons/12899

 

프로그래머스

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

programmers.co.kr

 

다음은 제가 작성한 코드입니다.

이번에는 +4점을 줬습니다. 점수의 기준이 있나 궁금하네요~

 

class Solution {
    String answer="";
    public String solution(int n) {
        depth(n);        
        
        return answer;
    }
    
    public void depth(int n)
    {
        if(n==0)
            return;
        int rest=n%3;
        int div=n/3;
        
        if(rest==0)
        {
            answer="4"+answer;
            if(div<=0)
                return;
            else
                depth(div-1);
        }
        else if(rest==1)
        {
            answer="1"+answer;
            if(div<=0)
                return;
            else
                depth(div);
        }
        else if(rest==2)
        {
            answer="2"+answer;
            if(div<=0)
                return;
            else
                depth(div);
        }
            
    }
}

 

코드입니다.

제가 생각한 아이디어 부분입니다.

① 1,2,4가 반복되기에 저는 반복 주기를 3으로 설정

② 수의 규칙을 찾는데 3은 4 4는 11 즉  124나라의 숫자 끝자리는 자연수의 %한 값 

    - n%3==0이면 4

    - n%3==1이면 1

    - n%3==2이면 2 이런식으로 진행했습니다.

③ 마지막 자리 숫자를 찾았고 그 다음자리 숫자는 n/3의 값 즉 몫을 n과같이 반복처리 n이 0이 될때까지

④ 다만 여기서 주의할점! n%3할때 나머지가 0이면 실제적으로 1,2,4의 반복이기 실질적으로 3번째

    ex) n이6이라면 몫이 2 나머지가 0이 아니라, 몫이 1 나머지가 3으로 계산

 

이런 아이디어를 갖고 몫이 0이나올때까지 계속 숫자를 나누어주며 재귀함수를 태웠습니다.

 

아이디어를 막상 말로 설명하려니 꼬이네요~ ㅠㅠ

오늘은 간단하게 마무리하겠습니다.

 

감사합니다:D

반응형