25. 프로그래머스(1단계) - 124 나라의 숫자

성훈·2021년 8월 14일
0

Algorithm

목록 보기
25/61
post-thumbnail

📌 문제의 조건

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

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

제한사항 🤔

  • n은 500,000,000이하의 자연수 입니다.

📌 풀이

첫 풀이 👨‍💻

function solution(n) { 
    let result = [n]
    while(result.filter(e=>{if(e === 1 || e === 2 || e === 3){
        return false
    } else {
        return true
    }}).length !== 0 ){
        let temp = result[0];
        result[0] = temp % 3 ? temp % 3 : 3
        if(Math.floor(temp/3)){
            result.unshift(Math.floor((temp-1)/3));
        }
    }
    return result.map(e=>e === 3 ? 4 : e).join('')
}

-> 시간 너무 오래걸림

더 생각한 후 풀이 👨‍💻

function solution(n){
    let result = '',
    numbers = [4, 1, 2];
    while(n){
        result = numbers[n % 3] + result;
        console.log(n)
        n = n % 3 === 0 ? n/3-1 : Math.floor(n/3)
    }
    return result;
}

📌 리뷰

아 이건 진짜 패턴찾아내는게 너무 힘들었다.
3진법으로 써볼 수 있겠는데 이리 저리 자르다가 시간을 얼마나 썼는지.

10진법과 3진법, 124를 차례대로 적어보니까 그제서야 패턴이 눈에 보이기 시작했다.

요는 3진법에서의 0을 124에서 4에 대응시켜주면 되는 문제였다.

그리고 n을 점차 줄여나가는 식으로 마지막으로 n이 없어지면 반복문이 멈추고 result가 반환되는 식으로 써봤다.

1단계라고 너무 가볍게 여겼던 것 같다.

다른 1단계 문제들이 무지성으로 풀리는 문제이다보니 조금 풀어지지 않았나 싶다.

다시 조이고 달리자

📌 문제 출처

출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges#

profile
어떻게 이걸 풀어낼 수 있을까

0개의 댓글