[프로그래머스] 저주의 숫자 3 - JavaScript
문제 출처
문제 설명
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
예시
입출력 예
n | return |
---|---|
15 | 25 |
40 | 76 |
풀이
function solution(n) {
// 제한사항에 n이 100까지 라고 비교적 작은 숫자가 적혀있으므로
// 넉넉하게 3의 배수와 3이 들어간 숫자를 제외하기 위해 200~300 정도 배열을 만들어줍니다.
// Array.from() 메서드를 사용하면 1부터 200까지 숫자 배열을 쉽게 만들수 있습니다.
const nums = Array.from({ length: 200 }, (_, i) => i + 1);
// 만들어진 숫자 배열을 filter() 메서드를 이용하여
// 3의 배수와 3이 들어간 숫자를 거른 수들의 집합을 만들어줍니다.
const noThreeNums = nums.filter(
(m) => m % 3 !== 0 && !m.toString().includes("3")
);
// 이제 3의 배수와 3이 들어간 숫자를 제외한 수의 배열이 순서대로 들어있는 배열을
// n - 1 (배열의 시작은 0이므로) 번째 수가 우리가 원하는 수 입니다.
return noThreeNums[n - 1];
}
console.log(solution(15)); // 25
console.log(solution(40)); // 76
정리
사용된 메서드와 문법에 대해 더 공부하고 싶으신 분은 링크를 클릭해주세요!
Array.from() 메서드 - MDN
filter() 메서드 - MDN
toString() 메서드 - MDN
includes() 메서드 - MDN
피드백은 언제나 환영입니다. 😊