TIL26-01 오늘의 코딩테스트

김태혁·2023년 2월 8일
0

TIL

목록 보기
82/205
  1. 진료 순서 정하기

    외과의사 머쓱이는 응급실에 온 환자의 응급도를 기준으로 진료 순서를 정하려고 합니다. 정수 배열 emergency가 매개변수로 주어질 때 응급도가 높은 순서대로 진료 순서를 정한 배열을 return하도록 solution 함수를 완성해주세요.

    emergency result
    [3, 76, 24] [3, 1, 2]
    [1, 2, 3, 4, 5, 6, 7] [7, 6, 5, 4, 3, 2, 1]
    [30, 10, 23, 6, 100] [2, 4, 3, 5, 1]
function solution(emergency) {
    let realAnswer = [];
    const answer = [...emergency];
    let a = emergency.sort((a, b) => b - a);    //주어진 배열을 내림차순 정렬하면 응급도가 높은순이 첫번째에 위치한다.
    for (let i = 0; i < answer.length; i++) {
        for (let j = 0; j < a.length; j++) {
            if (answer[i] == a[j]) {       //기존 배열과 응급도순으로 된 배열을 비교하여 같은 값일 때 해당 인덱스값에 1을 더해주고, 빈 배열에 넣어주면 응급도 순번이 매겨진다.
                realAnswer.push( j + 1 );
            }
        }
    }
    return realAnswer;
}
  • map 함수를 활용한 간단한 풀이
function solution(emergency) {
 	function solution(emergency) {
    const answer = [...emergency]; 
    let a = emergency.sort((a, b) => b - a);     
    return answer.map((x)=> a.indexOf(x)+1); 
}
  1. 숨어있는 숫자의 덧셈 (2)

    문자열 my_string이 매개변수로 주어집니다. my_string은 소문자, 대문자, 자연수로만 구성되어있습니다. my_string안의 자연수들의 합을 return하도록 solution 함수를 완성해주세요.

    my_string result
    "aAb1B2cC34oOp" 37
    "1a2b3c4d123Z" 133
function solution(my_string) {
    let a= my_string.match(/\d+/g); //1개 이상의 연속된 숫자를 배열로 찾아온다.
    if ( a == null) {
        return 0;  //숫자가 없을경우 null값이 된다.
    } else {
        return a.map( x => Number(x)).reduce( ( a, b) =>  a+b, 0);     //배열의 안의 숫자를 숫자화 시켜주고 reduce로 누산한다.
    }
}
  1. 이진수 더하기

    이진수를 의미하는 두 개의 문자열 bin1과 bin2가 매개변수로 주어질 때, 두 이진수의 합을 return하도록 solution 함수를 완성해주세요.

    bin1 bin2 result
    "10" "11" "101"
    "1001" "1111" "11000"
function solution(bin1, bin2) {
    return (parseInt(bin1,2)+parseInt(bin2,2)).toString(2);
}
  1. 소인수분해

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

    n result
    12 [2, 3]
    17 [17]
    420 [2, 3, 5, 7]
function solution(n) {
    let a = []
    let answer = [];
    for (let i = 1; i <= n; i++) {
        if ( n%i == 0) {
            a.push(i);    //n과i의 나머지가 0일 때 i는 n의 약수 
        }
    } 
    for (let i = 0; i < a.length; i++) {
        if( isPrime(a[i]) == true) {
            answer.push(a[i]);  //소수들을 찾아서 배열에 넣고 반환
        } 
    }
    return answer;
}
function isPrime (k) {
    for (let i = 2; i < k; i++) {
        if ( k%i === 0) {
            return false;
        } 
    } 
    return k >1 ;
}
profile
도전을 즐기는 자

0개의 댓글