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

김윤경·2023년 5월 29일
0

JS 알고리즘 문제

목록 보기
7/10
post-thumbnail

💻 8주차 문제

평행

⭐⭐⭐⭐⭐


💡 점 네 개의 좌표를 담은 이차원 배열 dots가 다음과 같이 매개변수로 주어집니다.

  • [[x1, y1], [x2, y2], [x3, y3], [x4, y4]]
    주어진 네 개의 점을 두 개씩 이었을 때, 두 직선이 평행이 되는 경우가 있으면 1을 없으면 0을 return하도록 solution 함수를 완성해보세요.

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

function solution(dots) {
  let answer = 0;
  function calculation(a, b, c, d) {
    let Diff1, Diff2;
    Diff1 = (b[1] - a[1]) / (b[0] - a[0]);
    Diff2 = (d[1] - c[1]) / (d[0] - c[0]);
    
    if (Diff1 == Diff2) {
      answer += 1;
    }
  }

  calculation(dots[0], dots[1], dots[2], dots[3]);
  calculation(dots[0], dots[2], dots[1], dots[3]);
  calculation(dots[0], dots[3], dots[1], dots[2]);

  return answer > 0 ? 1 : 0;
}

OX 퀴즈

⭐⭐⭐⭐⭐⭐


💡 덧셈, 뺄셈 수식들이 'X[연산자]Y = Z' 형태로 들어있는 문자열 배열 quiz가 매개변수로 주어집니다. 수식이 옳다면 "O" 틀리다면 "X"를 순서대로 담은 배열을 return하도록 solution 함수를 완성해주세요.


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

function solution(quiz) {
  let answer = [];
  return quiz.map(t => {
    const [calc, result] = t.split(" = ");
    const sign = calc.includes("+") ? 1 : -1;
    const [a, b] = calc.split(sign == 1 ? " + " : " - ");
    let a1 = Number(a);
    let b1 = Number(b);
    let result1 = Number(result)
    return a1 + (b1 * sign) == result1 ? "O" : "X"
  });
}

로그인 성공?

⭐⭐⭐


💡 머쓱이는 프로그래머스에 로그인하려고 합니다. 머쓱이가 입력한 아이디와 패스워드가 담긴 배열 id_pw와 회원들의 정보가 담긴 2차원 배열 db가 주어딜 때, 다음과 같이 로그인 성공, 실패에 따른 메시지를 return하도록 solution 함수를 완성해주세요.

  • 아이디와 비밀번호가 모두 일치하는 회원정보가 있으면 "login"을 return 합니다.
  • 로그인이 실패했을 때 아이디가 일치하는 회원이 없다면 "fail"을, 아이디는 일치하지만 비밀번호가 일치하는 회원이 없다면 "wrong pw"를 return 합니다.

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

function solution(id_pw, db) {
  let answer = "fail"
  const [id, pw] = id_pw;
  let check = false;
  for (let i = 0; i < db.length; i++) {
    if (id == db[i][0] && pw == db[i][1]){
      check = true;
      if (check = true) {
        return "login";
      }
    }
    else if (id == db[i][0] && pw != db[0][1]) {
      return answer = "wrong pw"
    }
  }
  return answer;
}

구슬을 나누는 경우의 수

⭐⭐⭐⭐⭐⭐


💡 머쓱이는 구슬을 친구들에게 나누어주려고 합니다. 구슬은 모두 다르게 생겼습니다. 머쓱이가 갖고 있는 구슬의 개수 balls와 친구들에게 나누어 줄 구슬 개수 share이 매개변수로 주어질 때, balls개의 구슬 중 share개의 구슬을 고르는 가능한 모든 경우의 수를 return하는 solution 함수를 완성해주세요.


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

function solution(balls, share) {
  var answer = 0;
  const factorial = num => num == 0 ? 1 : num * factorial(num - 1);
  return Math.round(factorial(balls) / factorial(balls - share) / factorial(share));
}

0개의 댓글