문제
매개변수 n이 주어질 때 3의 배수와 숫자 3을 사용하지 않은 숫자로 바꿔 리턴하여라
나의 풀이
function solution(n) {
var answer = 0;
var count = 0;
for(let i = 0; ;i++) {
if (i % 3 === 0 || i.toString().includes("3")) {
continue;
}
answer = i;
count++;
if (count === n) {
break;
}
}
return answer;
}
- answer : 반환할 결과 값을 초기화
- count : 카운트 갯수 초기화
- for
- i를 0부터 1씩 증가
- 만약 i가 3의 배수이거나 3을 포함하면 스킵
- answer에 i 값 저장
- 현재까지 카운트한 숫자 개수 증가
- 만약 카운트한 숫자의 개수가 n과 같아지면 종료
다른 풀이
1)
function solution(n) {
return [...Array(n * 3)]
.map((_, i) => i + 1)
.filter((num) => num % 3 !== 0 && !num.toString().includes("3"))[n - 1];
}
- n * 3 크기의 배열을 생성한다
- map 각 배열의 요소는 인덱스 값 i에 1을 더한 숫자로 채워준다 이를 통해 1부터 n * 3까지 숫자 생성
- filter 사용하여 숫자 필터링한다 3의 배수가 아니고, 문자열로 변확시 3을 포함하지 않는 것
- 필터링된 배열 중 n - 1 번째 요소를 반환
2)
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;
}
- for 문에 적용한 n 수까지 루프돌리는 것을 1씩 늘려서 적용
'기초다지기 > JS 코딩테스트' 카테고리의 다른 글
javaScript 2차원 배열중 큰 수 구하기 (1) | 2023.11.09 |
---|---|
javaScript 정수 배열 조건문 (1) | 2023.11.08 |
javaScript 정수 배열에서 0 만들기 (0) | 2023.11.07 |
javaScript 유한소수 판별하기 (0) | 2023.11.06 |
javascript 조건에 맞는 수 찾기 (0) | 2023.11.03 |