JS 알고리즘 9주차

선민·2023년 6월 3일
0

JS_Programmers

목록 보기
7/8

9주차

1. 삼각형의 완성조건 (2) ⭐️⭐️⭐️

https://school.programmers.co.kr/learn/courses/30/lessons/120868

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

다른 사람 풀이 😇

function solution(sides) {
   return Math.min(...sides) * 2-1
}
  • Math.mis(...sides)으로 sides에서 가장 작은 수를 구한 후, 동일하게 * 2 - 1

2. 모스부호 (1) ⭐️

https://school.programmers.co.kr/learn/courses/30/lessons/120838

function solution(letter) {
    let result = letter.split(' ')
    let answer = ''
    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(let i = 0; i < result.length; i++){
        answer += morse[result[i]]
    }
    return answer
}

3. 연속된 수의 합 ⭐️⭐️

https://school.programmers.co.kr/learn/courses/30/lessons/120923

function solution(num, total) {
    var answer = [];
    let sum =0;
    let val = parseInt((total / num)); //3
    let i = 0;
  
    for(let j = 0; j < num / 2 + 1; j++){
        for(i = 0; i < num; i++){
            sum += val;
            val += 1;;
        }
    if(sum==total){
        for(i= num-1 ; i >= 0; i--){
            answer[i] = val - 1;
            val-=1;
        }
        break;
    }
    else{
        val= val-num - 1;
        sum=0;
    	}
	}
    return answer;
}

다른 사람 풀이 so 간단

function solution(num, total) {
    var min = Math.ceil(total/num - Math.floor(num/2));
    var max = Math.floor(total/num + Math.floor(num/2));

    return new Array(max-min+1).fill(0).map((el,i)=>{return i+min;});
}
  • Array.fill()
    const array1 = [1, 2, 3, 4];
    // Fill with 0 from position 2 until position 4
    console.log(array1.fill(0, 2, 4));
    // Expected output: Array [1, 2, 0, 0]
  • Math.ceil()
    : 올림
  • Math.floor()
    : 내림
  • Array() 생성자
    : 새로운 Array객체를 생성할 때 사용한다.
  • map()
    : 배열 내의 모든 요소 각각에 대하여 주어진 함수를 호출한 결과를 모아 새로운 배열을 반환한다.

4. 분수의 덧셈 ⭐️

https://school.programmers.co.kr/learn/courses/30/lessons/120808

//최대 공약수를 구하고 해당 값으로 분자, 분모를 나눠서 출력하기
function solution(numer1, denom1, numer2, denom2) {
    let a = numer1 * denom2 + numer2 * denom1
    let b = denom1 * denom2
    let maximum = 1
    
    for (let i = 1; i <= a; i++) {
        if(a % i === 0 && b % i === 0) {
            maximum = i
        }
    }
    return [a / maximum, b / maximum]
}
profile
안녕하세요ꯁ

0개의 댓글