프로그래머스 : JavaScript 알고리즘 100일 챌린지 12일차
- 프로그래머스 : https://school.programmers.co.kr/learn/challenges/training?order=acceptance_desc
- 유트브 참고 : https://www.youtube.com/watch?v=RMmOU2u-_as&list=PLkfUwwo13dlWZxOdbvMhkzhAowaiEjuGS
코딩테스트 입문 Day12
1. 모음 제거 : 영어에선 a, e, i, o, u 다섯 가지 알파벳을 모음으로 분류합니다. 문자열 my_string이 매개변수로 주어질 때 모음을 제거한 문자열을 return하도록 solution 함수를 완성해주세요.
function solution(my_string) {
var answer = '';
return answer;
}
길라잡이
- 데이터를 수정해서 답을 구해보세요.
- 예시
my_string | result |
"bus" | "bs" |
"nice to meet you" | "nc t mt y" |
답 확인하기
function solution(my_string) {
var answer = '';
const newArray = ['a', 'e', 'i', 'o', 'u'];
for(let i=0; i<my_string.length; i++){
const item = my_string[i];
let check = false;
for(let j=0; j<newArray.length; j++){
if(item === newArray[j]){
check = true;
break;
}
}
if(check) continue;
answer += item;
}
return answer;
}
// function solution(my_string) {
// var answer = '';
// for(let i=0; i<my_string.length; i++){
// const item = my_string[i];
// if(item === 'a'){
// continue;
// }
// if(item === 'e'){
// continue;
// }
// if(item === 'i'){
// continue;
// }
// if(item === 'o'){
// continue;
// }
// if(item === 'u'){
// continue;
// }
// answer += item;
// }
// return answer;
// }
해설 확인하기
코드는 주어진 문자열에서 모음(a, e, i, o, u)을 제외한 나머지 문자들로 이루어진 문자열을 생성하여 반환하는 함수 solution입니다.
해당 함수는 다음과 같은 방식으로 동작합니다:
초기값으로 빈 문자열을 가지는 answer 변수를 선언합니다. 이 변수는 최종적으로 생성된 문자열을 저장할 변수입니다.
newArray 배열에 모음(a, e, i, o, u)을 저장합니다.
반복문을 통해 my_string의 각 문자를 순회합니다.
내부 반복문을 통해 현재 문자 item이 newArray에 포함되는지 확인합니다.
만약 item이 newArray에 포함된다면, check 변수를 true로 설정하고 반복문을 종료합니다.
check 변수가 true인 경우는 모음이므로, 다음 문자로 넘어가기 위해 continue 문을 실행합니다.
그 외의 경우는 모음이 아니므로, answer 변수에 item을 추가합니다.
반복문이 종료되고 나면 최종적으로 생성된 문자열인 answer를 반환합니다.
즉, solution 함수는 주어진 문자열에서 모음을 제외한 나머지 문자들로 이루어진 문자열을 생성하여 반환합니다.
2. 문자열 정렬하기(1) : 문자열 my_string이 매개변수로 주어질 때, my_string 안에 있는 숫자만 골라 오름차순 정렬한 리스트를 return 하도록 solution 함수를 작성해보세요.
function solution(my_string) {
var answer = [];
return answer;
}
길라잡이
- 데이터를 수정해서 답을 구해보세요.
- 예시
my_string | result |
"hi12392" | [1, 2, 2, 3, 9] |
"p2o4i8gj2" | [2, 2, 4, 8] |
"abced0" | [0] |
답 확인하기
function solution(my_string) {
var answer = [];
for(let i=0; i<my_string.length; i++){
const item = Number(my_string[i]);
if(Number.isNaN(item)){
continue;
}
answer.push(item)
}
return answer.sort((a,b) => a-b);
}
// Number.isNan : 주어진 메서드의 값이 NaN인지 판별해줍니다. 값이 NaN이면 true, 아니면 false,
해설 확인하기
코드는 주어진 문자열에서 숫자로 변환 가능한 문자들을 추출하여 정렬된 배열로 반환하는 함수 solution입니다.
해당 함수는 다음과 같은 방식으로 동작합니다:
초기값으로 빈 배열 answer를 선언합니다. 이 배열은 추출된 숫자들을 저장할 배열입니다.
반복문을 통해 my_string의 각 문자를 순회합니다.
현재 문자 my_string[i]를 Number() 함수를 사용하여 숫자로 변환합니다. 변환한 결과를 item 변수에 저장합니다.
Number.isNaN() 함수를 사용하여 item이 NaN인지 확인합니다. NaN은 숫자가 아님을 나타내는 값입니다.
만약 item이 NaN이라면, continue 문을 실행하여 다음 문자로 넘어갑니다.
그 외의 경우는 숫자이므로, answer 배열에 item을 추가합니다.
반복문이 종료되고 나면, answer 배열을 오름차순으로 정렬합니다. sort() 메서드를 사용하며, 비교 함수 (a, b) => a - b를 통해 오름차순으로 정렬됩니다.
정렬된 배열 answer를 반환합니다.
즉, solution 함수는 주어진 문자열에서 숫자로 변환 가능한 문자들을 추출하여 정렬된 배열로 반환합니다. 숫자로 변환할 수 없는 문자 또는 NaN은 제외됩니다.
3. 숨어있는 순자의 덧셈(1) : 문자열 my_string이 매개변수로 주어집니다. my_string안의 모든 자연수들의 합을 return하도록 solution 함수를 완성해주세요.
function solution(my_string) {
var answer = 0;
return answer;
}
길라잡이
- 데이터를 수정해서 답을 구해보세요.
- 예시
my_string | result |
"aAb1B2cC34oOp" | 10 |
"1a2b3c4d123" | 16 |
답 확인하기
function solution(my_string) {
var answer = 0;
for(let i=0; i<my_string.length; i++){
const item = my_string[i];
if(Number.isNaN(Number(item))){
continue;
}
answer += Number(item);
}
return answer;
}
해설 확인하기
코드는 주어진 문자열에서 숫자로 변환 가능한 문자들을 추출하여 합을 계산하여 반환하는 함수 solution입니다.
해당 함수는 다음과 같은 방식으로 동작합니다:
초기값으로 0을 가지는 answer 변수를 선언합니다. 이 변수는 추출된 숫자들의 합을 저장할 변수입니다.
반복문을 통해 my_string의 각 문자를 순회합니다.
현재 문자 my_string[i]를 Number() 함수를 사용하여 숫자로 변환합니다. 변환한 결과를 item 변수에 저장합니다.
Number.isNaN() 함수를 사용하여 item이 NaN인지 확인합니다. NaN은 숫자가 아님을 나타내는 값입니다.
만약 item이 NaN이라면, continue 문을 실행하여 다음 문자로 넘어갑니다.
그 외의 경우는 숫자이므로, item을 숫자로 변환한 후 answer에 더합니다.
반복문이 종료되고 나면, answer 변수에는 추출된 숫자들의 합이 저장되어 있습니다. answer 값을 반환합니다.
즉, solution 함수는 주어진 문자열에서 숫자로 변환 가능한 문자들을 추출하여 합을 계산하여 반환합니다. 숫자로 변환할 수 없는 문자 또는 NaN은 제외됩니다.
4. 소인수분해 : 소인수분해란 어떤 수를 소수들의 곱으로 표현하는 것입니다. 예를 들어 12를 소인수 분해하면 2 * 2 * 3 으로 나타낼 수 있습니다. 따라서 12의 소인수는 2와 3입니다. 자연수 n이 매개변수로 주어질 때 n의 소인수를 오름차순으로 담은 배열을 return하도록 solution 함수를 완성해주세요.
function solution(n) {
var answer = [];
return answer;
}
길라잡이
- 데이터를 수정해서 답을 구해보세요.
- 예시
n | result |
12 | [2, 3] |
17 | [17] |
420 | [2, 3, 5, 7] |
답 확인하기
function solution(n) {
var answer = [];
for(let i=2; n !== 1; i++){
if(n % i === 0){
while(n % i === 0){
n /= i;
}
answer.push(i);
}
}
return answer;
}
해설 확인하기
코드는 주어진 수 n의 소인수 분해 결과를 배열로 반환하는 함수 solution입니다.
해당 함수는 다음과 같은 방식으로 동작합니다:
초기값으로 빈 배열 answer를 선언합니다. 이 배열은 소인수 분해 결과를 저장할 배열입니다.
반복문을 통해 i를 2부터 시작하여 n이 1이 될 때까지 반복합니다.
조건문을 사용하여 n을 i로 나누었을 때 나머지가 0인지 확인합니다. 이는 i가 n의 약수인지를 검사하는 것입니다.
만약 n을 i로 나누었을 때 나머지가 0이라면, i는 n의 소인수입니다.
while 루프를 사용하여 n을 i로 나누었을 때 나누어 떨어질 때까지 n을 i로 나눕니다. 이는 n을 소인수 i로 최대한 나누는 과정입니다.
i를 answer 배열에 추가합니다.
반복문이 종료되고 나면, answer 배열에는 n의 소인수 분해 결과가 저장되어 있습니다.
answer 배열을 반환합니다.
즉, solution 함수는 주어진 수 n을 소인수 분해하여 배열로 반환합니다. 배열에는 n의 소인수들이 저장되어 있습니다.