문제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` 배열을 반환합니다.