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 함수를 완성해주세요.
n
≤ 100n | result |
---|---|
15 | 25 |
40 | 76 |
function solution(n) {
let threeXNumber = 1
let threeXArray = []
for (let i = 1; i <= n; i++) {
const isMultipleOfThree = threeXNumber % 3 === 0
const isIncludeThree = threeXNumber.toString().includes('3')
if (isMultipleOfThree || isIncludeThree) {
i--
threeXNumber++
} else {
threeXArray.push(threeXNumber)
threeXNumber++
}
}
return threeXArray[threeXArray.length - 1]
}
function solution(n) {
return [...Array(n * 3)]
.map((_, i) => i + 1)
.filter((num) => num % 3 !== 0 && !num.toString().includes("3"))[n - 1];
}
function solution(n) {
var answer = 0;
for(let i=1; i<=n; i++){
if(i%3 == 0){
n++;
}
if(String(i).includes("3")& i%3 != 0){
n++
}
}
return n;
}
3의 배수를 판별하는 isMultipleOfThree와 3이 들어있는 숫자를 판별하는 isIncludeThree를 통해서 새로운 배열을 만들고 그 배열의 마지막 원소를 구하는 방식으로 해결했는데.. 다른 사람들 풀이중에도 나와 비슷한 게 있지만, 좀 더 간단하게 구현한 것도 있고, 고차함수를 이용해서 풀이를 해낸 것도 있었다. 아무튼 지금은 계속 떠오르는데로 직관적으로 풀이를 해볼 생각이고, 계속 익숙해질거다. 그 다음에 다른 사람들 풀이도 보고 이해하면서 조금씩 나도 점점 간략하게 풀이하는 것에 도전해보자.