[코딩테스트 연습] 124 나라의 숫자

LaStella·2021년 12월 3일
0

- 문제

[문제링크]
124 나라가 있습니다. 124 나라에서는 10진법이 아닌 다음과 같은 자신들만의 규칙으로 수를 표현합니다.

1. 124 나라에는 자연수만 존재합니다.
2. 124 나라에는 모든 수를 표현할 때 1, 2, 4만 사용합니다.

예를 들어서 124 나라에서 사용하는 숫자는 다음과 같이 변환됩니다.

  • 제한사항
n은 500,000,000이하의 자연수 입니다.
  • 입출력 예

-전체코드

import java.util.*;

class Solution {
    public String solution(int n) {
        String answer = "";
        
        while(n > 0) {
            if(n % 3 == 0) {
                answer = "4" + answer;
                n -= 3;
            }
            else {
                answer = Integer.toString(n % 3) + answer;
            }
            n /= 3;
        }
        return answer;
    }
}

- 막혔던 점 & 해결방법

  1. 숫자를 1, 2, 4만을 사용하기 때문에 3진법 변환이라고 생각하였습니다. 다만 3진법은 0, 1, 2를 사용하기 때문에 기존 3진법에서 3으로 나눈 나머지가 0일때 0대신 4를 대입하였습니다. 3진법에서의 3은 자릿수가 올라가는 수이기에, 6의 경우 20으로 표현되나, 124나라에서는 14로 표현이 됩니다. 따라서 자리수가 올라가지 않도록 3으로 나누어 떨어질 경우, -3을 해줌으로써 오류를 해결하였습니다.
  2. 정확성 테스트를 모두 통과했으나, 효율성에서 시간 초과로 실패하였는데, answer = 4 + answer와 같이 사용할 경우 4는 String형이 아니기에 이를 변환하고 합치는 과정에서 오래걸리는 문제가 있었습니다. 때문에 4대신 "4"를 넣고, n % 3대신 이를 String형으로 변환한 값을 넣어 문제를 해결하였습니다.

- 느낀점

바로 전에 푼 멀쩡한 사각형과 마찬가지로 수학 관련 알고리즘을 사용하는 문제였으나 이전에 3진법 변환을 해본적이 있기에 좀 더 수월하게 풀 수 있었습니다.

profile
개발자가 되어가는 중...

0개의 댓글