JS 알고리즘 9주차

박규원·2023년 6월 5일
0

JS 알고리즘

목록 보기
8/11

삼각형의 완성조건 (2)

💡 선분 세 개로 삼각형을 만들기 위해서는 다음과 같은 조건을 만족해야 합니다.
  • 가장 긴 변의 길이는 다른 두 변의 길이의 합보다 작아야 합니다.

삼각형의 두 변의 길이가 담긴 배열 sides이 매개변수로 주어집니다. 나머지 한 변이 될 수 있는 정수의 개수를 return하도록 solution 함수를 완성해주세요.

function solution(sides) {
  
    sides.sort((a,b)=>a-b);
    
    return  (sides[1]-(sides[1]-sides[0])) + (((sides[0]+sides[1]) - sides[1]) -1);
}

// [a,b]로 한다면 retrun Math.min(...sides)*2-1 로 간편하게 코드를 작성할 수 있다.

모스부호 (1)

💡 머쓱이는 친구에게 모스부호를 이용한 편지를 받았습니다. 그냥은 읽을 수 없어 이를 해독하는 프로그램을 만들려고 합니다. 문자열 letter

가 매개변수로 주어질 때, letter를 영어 소문자로 바꾼 문자열을 return 하도록 solution 함수를 완성해보세요.

모스부호는 다음과 같습니다.

morse = { '.-':'a','-...':'b','-.-.':'c','-..':'d','.':'e','..-.':'f', '--.':'g','....':'h','..':'i','.---':'j','-.-':'k','.-..':'l', '--':'m','-.':'n','---':'o','.--.':'p','--.-':'q','.-.':'r', '...':'s','-':'t','..-':'u','...-':'v','.--':'w','-..-':'x', '-.--':'y','--..':'z' }

function solution(letter) {
    var answer = '';
    var morse = { 
    '.-':'a','-...':'b','-.-.':'c','-..':'d','.':'e','..-.':'f',
    '--.':'g','....':'h','..':'i','.---':'j','-.-':'k','.-..':'l',
    '--':'m','-.':'n','---':'o','.--.':'p','--.-':'q','.-.':'r',
    '...':'s','-':'t','..-':'u','...-':'v','.--':'w','-..-':'x',
    '-.--':'y','--..':'z'
    }
    
    for(var i=0;i<letter.split(' ').length;i++){
       answer += morse[letter.split(' ')[i]];
    }
    return answer;
}

연속된 수의 합

💡 연속된 세 개의 정수를 더해 12가 되는 경우는 3, 4, 5입니다. 두 정수 `num`과 `total`이 주어집니다. 연속된 수 `num`개를 더한 값이 `total`이 될 때, 정수 배열을 오름차순으로 담아 return하도록 solution함수를 완성해보세요.
function solution(num, total) {
    //배열의 합 구하기
    const add = arr => arr.reduce((a, b) => a + b, 0);
    
    var answer = [];
    for (var i=1;i<=num;i++){
        answer.push(i)
    }
    
    var sum = add(answer);
    
    while(sum!=total){
        if(sum<total){
            for(var i=0;i<num;i++)
                answer[i]+=1;        
            sum = add(answer);
        }
        else if (sum>total){
            for(var i=0;i<num;i++)
                answer[i]-=1;
            sum = add(answer);
        }
    }
        
    
    return answer;
}

분수의 덧셈

💡 첫 번째 분수의 분자와 분모를 뜻하는 `numer1`, `denom1`, 두 번째 분수의 분자와 분모를 뜻하는 `numer2`, `denom2`가 매개변수로 주어집니다. 두 분수를 더한 값을 기약 분수로 나타냈을 때 분자와 분모를 순서대로 담은 배열을 return 하도록 solution 함수를 완성해보세요.
function solution(numer1, denom1, numer2, denom2) {
    var answer = [];
    
    function grd(num1,num2){
        if(num2==0) return num1;
        return grd(num2,num1%num2);
    }
    
    if(denom1==denom2){
        answer.push(numer1+numer2);
        answer.push(denom1);
    }
    
    else if(denom1!=denom2){
        answer.push(numer1*denom2+numer2*denom1);
        answer.push(denom1*denom2);
    }
    
    var a=grd(answer[0],answer[1]);
    
    answer[0]=answer[0]/a;
    answer[1]=answer[1]/a;
    
    return answer;
}
profile
Just do IT

0개의 댓글