Bomb Kirby Running

코딩 테스트 챌린지

코딩 테스트 12

^. ̫ .^ 2023. 5. 29. 19:19

728x90

문제1 모음 제거

영어에선 a, e, i, o, u 다섯 가지 알파벳을 모음으로 분류합니다. 문자열 my_string이 매개변수로 주어질 때 모음을 제거한 문자열을 return하도록 solution 함수를 완성해주세요

 

제한사항

  • my_string은 소문자와 공백으로 이루어져 있습니다.
  • 1 ≤ my_string의 길이 ≤ 1,000

입출력 예

my_string result
"bus" "bs"
"nice to meet you" "nc t mt y"
function solution(my_string) {
  let vowels = ['a', 'e', 'i', 'o', 'u'];
  var answer = '';

  for (let i = 0; i < my_string.length; i++) {
    let char = my_string[i];

    if (!vowels.includes(char)) {
      answer += char;
    }
  }

  return answer;
}


주어진 문자열 `my_string`을 순회하면서 각 문자를 확인합니다. 이를 위해 `for` 루프를 사용합니다. 루프 변수 `i`를 0부터 `my_string`의 길이보다 작을 때까지 1씩 증가시키면서 반복합니다.
각 문자를 `char` 변수에 저장합니다.
`vowels` 배열에 `char`가 포함되어 있는지 확인합니다. `includes()` 메서드를 사용하여 `vowels` 배열에 `char`가 포함되어 있는지 여부를 확인할 수 있습니다.

만약 `char`가 `vowels`에 포함되어 있지 않다면, 즉 모음이 아니라면 `answer`에 `char`를 추가합니다. 이를 위해 `+=` 연산자를 사용하여 `answer` 변수에 `char`를 추가합니다.
`for` 루프가 종료되면 `answer`에는 모음이 제거된 문자열이 저장되어 있습니다.
최종적으로 `answer`를 반환합니다.

이렇게 구현된 함수를 이용하여 주어진 예시 입력에 대한 출력을 확인해보았습니다. `"bus"`의 경우 모음인 `"u"`가 제거되어 `"bs"`가 되었고, `"nice to meet you"`의 경우 `"i"`, `"e"`, `"o"`, `"e"`, `"o"`, `"u"`가 제거되어 `"nc t mt y"`가 됩니다.

 

문제2 문자열 정렬하기

문자열 my_string이 매개변수로 주어질 때, my_string 안에 있는 숫자만 골라 오름차순 정렬한 리스트를 return 하도록 solution 함수를 작성해보세요.

 

제한사항

  • 1 ≤ my_string의 길이 ≤ 100
  • my_string에는 숫자가 한 개 이상 포함되어 있습니다.
  • my_string은 영어 소문자 또는 0부터 9까지의 숫자로 이루어져 있습니다. - - -

입출력 예

my_string result
"hi12392" [1, 2, 2, 3, 9]
"p2o4i8gj2" [2, 2, 4, 8]
"abcde0" [0]
function solution(my_string) {
  let numbers = [];

  for (let i = 0; i < my_string.length; i++) {
    let char = my_string[i];

    if (!isNaN(char)) {
      numbers.push(parseInt(char));
    }
  }

  numbers.sort(function (a, b) {
    return a - b;
  });

  return numbers;
}

 

문제3 숨어있는 숫자의 덧셈

문자열 my_string이 매개변수로 주어집니다. my_string안의 모든 자연수들의 합을 return하도록 solution 함수를 완성해주세요

 

제한사항

  • 1 ≤ my_string의 길이 ≤ 1,000
  • my_string은 소문자, 대문자 그리고 한자리 자연수로만 구성되어있습니다.

입출력 예

my_string result
"aAb1B2cC34oOp" 10
"p2o4i8gj2" 16
function solution(my_string) {
  let sum = 0;

  for (let i = 0; i < my_string.length; i++) {
    let char = my_string[i];

    if (/^[1-9]$/.test(char)) {
      sum += parseInt(char);
    }
  }

  return sum;
}


합을 저장할 변수 `sum`을 0으로 초기화합니다.
주어진 문자열 `my_string`을 순회하면서 각 문자를 확인합니다. 이를 위해 `for` 루프를 사용합니다. 루프 변수 `i`를 0부터 `my_string`의 길이보다 작을 때까지 1씩 증가시키면서 반복합니다.

각 문자를 `char` 변수에 저장합니다.
`char`가 1자리 자연수인지 확인합니다. 이를 위해 정규 표현식 `/^[1-9]$/`을 사용하여 `char`가 1부터 9까지의 숫자인지 검사합니다.
`char`가 1자리 자연수라면, 즉 `/^[1-9]$/`와 매칭된다면 해당 숫자를 정수로 변환하여 `sum`에 더합니다.
`for` 루프가 종료되면 `sum`에는 모든 한자리 자연수의 합이 저장되어 있습니다.최종적으로 `sum`을 반환합니다.

문제4 소인수분해

소인수분해란 어떤 수를 소수들의 곱으로 표현하는 것입니다. 예를 들어 12를 소인수 분해하면 2 * 2 * 3 으로 나타낼 수 있습니다. 따라서 12의 소인수는 2와 3입니다. 자연수 n이 매개변수로 주어질 때 n의 소인수를 오름차순으로 담은 배열을 return하도록 solution 함수를 완성해주세요

 

제한사항

  • 2 ≤ n ≤ 10,000

입출력 예

n result
12 [2, 3]
17 [17]
420 [2, 3, 5, 7]
function solution(n) {
    var answer = [];
    var divisor = 2;

    while (n !== 1) {
        if (n % divisor === 0) {
            answer.push(divisor);
            n /= divisor;
        } else {
            divisor++;
        }
    }
    answer = [...new Set(answer)];

    return answer;
}

 소인수들을 담을 빈 배열 `answer`를 생성합니다.

나누는 수인 `divisor`를 2로 초기화합니다.
`n`이 1이 아닐 때까지 반복합니다.
`n`이 `divisor`로 나누어 떨어지는지 확인합니다. 나누어 떨어진다면, 즉 `n % divisor === 0`이면 `divisor`는 `n`의 소인수입니다. 이 경우 `divisor`를 `answer` 배열에 추가합니다.
`n`을 `divisor`로 나눕니다.
`n`이 `divisor`로 나누어 떨어지지 않는다면, 즉 `n % divisor !== 0`이면 `divisor`를 1 증가시켜 다음 소수를 찾습니다.
반복이 종료되면 `answer` 배열에는 `n`의 소인수들이 담겨 있습니다.
중복된 소인수를 제거하기 위해 `answer` 배열을 `Set` 객체로 변환하고 다시 배열로 변환합니다.
최종적으로 변환된 `answer` 배열을 반환합니다.