본문 바로가기
기초다지기/JS 코딩테스트

javaScript 3의 배수와 3을 제외한 숫자

by 김빵그 2023. 11. 7.

문제 

매개변수 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씩 늘려서 적용