한 걸음씩
[프로그래머스][JS] 저주의 숫자 3 본문
https://school.programmers.co.kr/learn/courses/30/lessons/120871
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이 과정
function solution(n) {
var answer = [];
for (let i = 1; i <= 186; i++){
if (i % 3 !== 0 && ![...i.toString()].includes('3')){
answer.push(i)
}
}
return answer[n - 1];
}
이 문제에서 중요한 건 제한사항 부분인데 n의 범위가 1 이상 100 이하이다.
반복문을 사용할 때 범위를 주의해야 한다. 1부터 186까지 반복을 해야 n이 100인 경우에 해당하는 수를 찾을 수가 있다.
186이라는 숫자는 answer배열의 길이가 100이 되는 때가 186이다. 모르겠다면 console.log 찍어서 확인해 보기
반복문 내부의 조건문은 요소가 3의 배수가 아니고, 문자열로 쪼갰을 때 3이 포함되지 않는 경우에만
answer배열에 push를 했다.
answer [n] 이렇게 반환을 하면 인덱스로 접근했기 때문에 원하는 값보다 하나 앞에 수가 나오는 것을 알 수 있는데 이 때문에
[n - 1] 값으로 접근하여 리턴을 해야 한다.
리뷰
배열의 길이가 적은 게 아니라 시간 초과가 뜨지 않을까 걱정했는데 이 부분이 문제가 아니라
반복문 범위를 잡는데 오류가 생겼다. 문제를 똑바로 읽고 풀어야 오류를 방지할 수 있다.
'Programmers' 카테고리의 다른 글
[프로그래머스][JS] K번째수 (0) | 2023.07.02 |
---|---|
[프로그래머스][JS] 배열 만들기 2 (0) | 2023.07.02 |
[프로그래머스][JS] 무작위로 K개의 수 뽑기 (0) | 2023.07.01 |
[프로그래머스][JS] 최솟값 만들기 (0) | 2023.06.30 |
[프로그래머스][JS] 크기가 작은 부분문자열 (0) | 2023.06.30 |