코딩테스트 연습(Lv0 / 046 ~ 049)- Day12 문자열, 정렬, 사칙연산, 수학

Kang.__.Mingu·2023년 1월 10일
0

코딩테스트(Lv0)

목록 보기
13/26

모음 제거

모음 제거

문제

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


function solution(my_string) {
	let vowel = ['a','e','i','o','u'];
    //  공백 포함해서 배열로 담음   
    let str = my_string.split("");
    
    for(let i = 0; i < vowel.length; i++) {
        for(let j = 0; j < str.length; j++){
            //  찾는 요소가 있으면 true     
            if(str.includes(vowel[i])){
                str.splice(str.indexOf(vowel[i]), 1);
            }
        }
    }
	return str;
}

위에 코드로 코드 실행하면 정답은 맞지만 제출 후 채점하면 테스트 케이스 3번은 실패한다. 그래서 다른 코드로 짜보았다.

	function solution(my_string) {
    let vowel = ['a','e','i','o','u'];
    return my_string.split('').
    		filter((str) => !vowel.includes(str)).join('');
}
  1. aeiou가 담긴 vowel 배열 생성
  2. my_string를 공백 포함하여 배열로 만듬
  3. filter를 사용하여 vowel에 my_string 배열 요소가 없다면
    새로운 배열로 만들고 join('')을 이용하여 문자열로 만들어줌

문자열 정렬하기(1)

문자열 정렬하기(1)

문제

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


function solution(my_string) {
    let num = '0123456789'
    let arr = [...my_string]
    		.filter((item) => num.includes(item))
    		.sort((a,b) => a - b);
  
  	// '문자'로 만들어진 배열을 숫자로 변경하여 새로운 배열 만듬 
    arr = arr.map((arr) => parseInt(arr));
    return arr;
}

숨어있는 숫자의 덧셈(1)

숨어있는 숫자의 덧셈(1)

문제

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


function solution(my_string) {
    let num = "0123456789";
    let sum = 0;
    [...my_string]
      .filter((n) => num.includes(n))
      .map((i) => sum += parseInt(i));
    return sum;
}
// 0 ~ 9까지의 자연수가 담겨있는 num 문자열 생성
// my_string을 배열로 담은 후 filter()를 이용하여 num 문자열 안에 my_string 요소가 있다면 새로운 배열을 만들어 안에 넣어라
// 새로 만든 배열에 map()을 이용하여 새로 만든 배열의 요소를 sum에 더해라 

소인수분해

소인수분해

문제

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


function solution(n) {
    let arr = [];
    // 2 / 2 = 1;
    // 1이 되지 않을 때까지 실행
    for(let i = 2; n !== 1; i++){
        // n 이 i로 나눠지는지 확인
        if(n % i === 0){
            // n이 i로 계속 나눠지는지 확인
            while(n % i === 0){
                n /= i;
            }
            // 더 이상 i로 나눌 수 없으니 배열에 push
            arr.push(i);
        }
    }
    return arr;
}

// n을 나눈 나머지가 0이 될 때까지
// 0으로 나눠진다면 몫을 배열에 넣기

// new Set()을 이용하여 중복 요소를 제거하는 방법도 있음
profile
최선을 다해 꾸준히 노력하는 개발자 망고입니당 :D

0개의 댓글