프로그래머스 풀이/level0

[Programmers] level 0) 문제 '저주의 숫자 3' 풀이

진기명기 2023. 4. 10. 13:28
🫠 Programmers (level 0) 
👉🏻 문제 55번 (저주의 숫자 3) : 1 ~ 100까지 숫자 3이 들어가거나, 3의 배수가 들어가면 +1을 하여 다음 숫자로 대체하여 사용하는 문제

 

 

 


function solution(n) {
  // n만큼 배열을 생성하되, 3이 포함된 숫자와 3의 배수가 제외되기 때문에 길이를 몰라 *2
  const maxNumber = n * 2

  // n * 2만큼 배열 생성 (1 ~ n*2)
  let array = new Array(maxNumber).fill(1).map((item, index) => item + index)
  
  // 3의 배수가 아니고, 숫자 3을 포함하지 않은 배열 요소 구하기
  let result = array.filter((item) => {
    return item % 3 !== 0 && !(item+'').includes('3')
  })

  // index는 0부터 시작이므로 -1
  return result[n-1]
}

 

✅ 확인할 점
💡 1 ~ 100까지 숫자를 나열하되, 만약 배열의 요소에 3의 배수가 있거나 숫자 3을 포함하고 있다면(13, 23, 33,...) 이를 제외해야 한다.

따라서 new Array(100)을 할 경우, 길이가 100보다 작아지기 때문에 정확한 길이를 알 수 없어 n * 2를 주었다.

 

💡 배열 요소를 1, 2, 3, 4, ... 처럼 값을 1 ~ n*2 만큼 넣기 위해 fill(1)을 통해 배열 요소를 1로 채운 후, map()을 사용하였다.

 

💡 (item+'')을 통해 문자열로 만들고, includes를 통해 문자 '3'을 포함하고 있는지 확인하였다.