반응형
1. 문제
https://school.programmers.co.kr/learn/courses/30/lessons/12899
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
반응형
'프로그래머스 > 구현' 카테고리의 다른 글
[구현] 프로그래머스 '메뉴 리뉴얼' - js (0) | 2023.05.06 |
---|---|
[구현] 프로그래머스 '불량 사용자' - js (0) | 2023.05.05 |
[구현] 프로그래머스 '삼각 달팽이' - js (0) | 2023.05.02 |
[재귀] 프로그래머스 '쿼드압축 후 개수' - js (0) | 2023.04.29 |
[구현] 프로그래머스 '기지국 설치' - js (0) | 2023.04.28 |