FE JS 알고리즘 문제 풀이(9주차)

김윤경·2023년 6월 2일
0

JS 알고리즘 문제

목록 보기
8/10
post-thumbnail

💻 9주차 문제

삼각형의 완성조건(2)

⭐⭐⭐


💡 선분 세 개로 삼각형을 만들기 위해서는 다음과 같은 조건을 만족해야 합니다.

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

문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/120868

function solution(sides) {
  let answer = 0;
  // (큰 변 + 작은 변 - 1) - (큰 변 - 작은 변 + 1) + 1
  // = 큰 변 + 작은 변 - 1 - 큰 변 + 작은 변 - 1 + 1
  // = 작은 변 * 2 - 1
 return 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'
}

문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/120838

function solution(letter) {
  let 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'
  }
  let answer = letter.split(" ").map(a => morse[a]).join("");
  return answer;
}

연속된 수의 합

⭐⭐⭐⭐⭐


💡 연속된 세 개의 정수를 더해 12가 되는 경우는 3, 4, 5 입니다. 두 정수 numtotal이 주어집니다. 연속된 수 num개를 더한 값이 total이 될 때, 정수 배열을 오름차순으로 담아 return하도록 solution 함수를 완성해보세요.


문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/120923

function solution(num, total) {
  let answer = [];
  let start = Math.ceil(total / num) - Math.floor(num / 2);
  let end = Math.floor(total / num) + Math.floor(num / 2);
    
  for (let i = start; i <= end; i++) {
    answer.push(i)
  }
  return answer;
}

분수의 덧셈

⭐⭐⭐⭐⭐


💡 첫 번째 분수의 분자와 분모를 뜻하는 number1, denom1, 두 번째 분수의 문자와 분모를 뜻하는 number2, denom2가 매개변수로 주어집니다. 두 분수를 더한 값을 기약 분수로 나타냈을 때 분자와 분모를 순서대로 담은 배열을 return하도록 solution 함수를 완성해보세요.


문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/120808

function solution(numer1, denom1, numer2, denom2) {
  let answer = [];
  let denom = denom1 * denom2
  let numer = numer1 * denom2 + numer2 * denom1
  let maximum = 1;
  
  for (let i = 1; i <= numer; i++) {
    if(numer % i === 0 && denom % i === 0)
      maximum = i;
  }
  
  answer.push(numer / maximum, denom / maximum);
  return answer;
}

이번 주차 JS 알고리즘 문제들은 수학적인 공식들을 모르면 풀기 어려운 문제들이었다 . . . (잘 모르는 사람 = 나) ㅜㅜㅜ 😥😥😥

0개의 댓글