본문 바로가기

프로그래머스/구현

[구현] 프로그래머스 '124 나라의 숫자' - js

반응형

1. 문제

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

 

프로그래머스

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

programmers.co.kr

2. 코드

이 문제를 처음 읽었을 때는 감이 잘 오지 않았다. 알고보니 1,2,4 이 세 개의 숫자를 쓴다는 것은 이 문제를 3진법으로 풀어야한다는걸 떠올려야 했다.

문제는 매우 쉬웠지만, 풀이를 생각하기가 어려운 문제인 것 같다.

정답)

function solution(n) {
    let answer = '';
    // 3진법 사용. 3과 나누어 떨어졌을 때 나머지를 0이 아닌 4로 본다고 생각하면 됨
    const numArr = [4, 1, 2];

    while(n) {
        answer += numArr[n%3]; // 3으로 나눈 나머지에 해당하는 인덱스 값 추출
        // 만약 n이 3 또는 6이라 3에 나누어 떨어지면 몫-1해줘야 원하는 배열의 값의 인덱스가 됨
        n = n%3 === 0 ? n/3 -1 : Math.floor(n/3);
    }

    return answer;
}

처음 푼 코드) 타임아웃

이건 처음 문제를 이해하고 푼 코드인데, 타임아웃이 떴다. n 값을 정해주는 로직의 차이인데..뭐가 문제인진 모르겠다 ㅋㅋㅋㅋㅋ

function solution(n) {
    let answer = '';
    let arr = ['4','1','2'];
    
    while(n>0){
        answer = arr[n%3] + answer;
        
        n = Math.ceil(n/3-1);
    }
    
    return answer;
}

 

10,2 진법이 아닌 문제는 또 처음 풀어본다. 새로운 시선의 문제!

 

복기

6/21
반응형