-
[프로그래머스 / JS] Lv. 0 저주의 숫자 3Algorithm/프로그래머스 2022. 12. 13. 12:58반응형
문제 설명
3x 마을 사람들은 3을 저주의 숫자라고 생각하기 때문에 3의 배수와 숫자 3을 사용하지 않습니다. 3x 마을 사람들의 숫자는 다음과 같습니다.
10진법 3x 마을에서 쓰는 숫자 10진법 3x 마을에서 쓰는 숫자 1 1 6 8 2 2 7 10 3 4 8 11 4 5 9 14 5 7 10 16 정수 n이 매개변수로 주어질 때, n을 3x 마을에서 사용하는 숫자로 바꿔 return하도록 solution 함수를 완성해주세요.
제한사항
- 1 ≤ n ≤ 100
풀이
function solution(n) { while (true) { let arrConvN = new Array(2 * n).fill(0).map((ele, idx) => idx + 1) .filter(ele => !((ele % 3 === 0) || (String(ele).includes('3')))); if (arrConvN.length >= n) return arrConvN[n-1] else n *= 2 } }
사고과정
- 변환의 규칙성을 찾기 힘들 것 같다
- 1부터 차례대로 숫자를 늘려가며 3과 관련된 수인지 판단하고 변환값을 다른 변수에 저장해가면서 n에서의 변환값을 찾아보자
- 아 조건에 따라 구현하기 겁나게 까다롭네
- while문 사용해서 구현은 했는데 너무 가독성도 안좋고 논리 구조를 파악하기 힘들다
- 조금더 쉬운 방법 없을까?
- 아! 1 ~ n의 arr을 생성하고 조건에 따라 필터링하면 되겠는데?
- 변환값을 담은 데이터 길이가 n 이상이어야 되는데 어떤값을 쓰지?
- while을 사용해서 필터링하기 전 데이터사이즈가 충분하지 않을 때 2배씩 늘리게 구현하자
평가
개선점
알게된점
반응형'Algorithm > 프로그래머스' 카테고리의 다른 글
[프로그래머스 / JS] Lv.0 최빈값 구하기 (0) 2022.12.15 [프로그래머스 / JS] Lv.0 외계행성의 나이 (0) 2022.12.13 [프로그래머스 / JS] Lv.0 구슬을 나누는 경우의 수 (0) 2022.12.13 [프로그래머스 / JS] Lv.0 평행 (0) 2022.12.12 [프로그래머스 / JS] LV.0 겹치는 선분의 길이 (0) 2022.12.12