반응형
출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges
** Javascript
3진법이라는 알았는데 for문으로 접근했다가 시간을 너무 오래 잡아먹었다.
결국 구글링해서 답을 알아냈는데 생각보다 더 간단했다.
while 을 사용하면 이렇고
function solution(n) {
const availableNumber = [ 4, 1, 2 ];
let answer = '';
while (n) {
answer = availableNumber[n % 3] + answer;
n = n % 3 ? Math.floor(n / 3) : n / 3 - 1;
}
return answer;
}
더 줄이면 이렇게 된다.
추천 가장 많이 받은 식인데 재귀함수 방법을 썼다.
n===0 조건 부분을 편집해서 길이를 더 줄여봤다.
function solution(n) {
return n ? solution(parseInt((n - 1) / 3)) + [1, 2, 4][(n - 1) % 3] : '';
}
(2022-04-28 추가)
** Python
def solution(n):
answer = ''
일이사 = '124'
if n < 1: return answer
while(n) :
n -= 1
answer = 일이사[(n) % 3] + answer
n = n // 3
return answer;
반응형
'프로그래머스 > level 2' 카테고리의 다른 글
[프로그래머스] H-Index (0) | 2021.08.11 |
---|---|
[프로그래머스] 최댓값과 최솟값 (0) | 2021.08.10 |
[프로그래머스] 최솟값 만들기 (0) | 2021.08.10 |
[프로그래머스] N개의 최소공배수 (0) | 2021.08.10 |
[프로그래머스] 오픈채팅방 (0) | 2021.08.09 |