[JS]11. 조건문 문제




1. 대소 비교

두 정수를 입력 받아 문자열 형태의 대소비교 부등호를 반환하는 함수를 작성하시오.

  • 첫번째 수가 두번째 수보다 크면 >
  • 첫번째 수가 두번째 수보다 작으면 <
  • 첫번째 수와 두번째 수가 같으면 =


function answer(x, y) {
  let result = ""
  // 구현

  if (x > y) result = ">"
  else if (x < y) result = "<"
  else result = "="
  
  // 구현 종료
  return result;
}

let input = [
  // TC : 1
  [3, 5], 
  // TC : 2
  [7, 4], 
  // TC :3
  [2, 2], 
];

for (let i = 0; i < input.length; i++) {
  console.log(`#${i + 1} ${answer(input[i][0], input[i][1])}`);
}

// output
#1 <
#2 >
#3 =



2. 나누기와 대소비교

4개의 수를 입력받아 나누기 연산을 통해 대소를 판단하는 함수를 제작하시오.
입력 값은 1000이하의 자연수 a,b,c,d가 주어지고
a/b > c/d 일 때는 1, a/b = c/d 일 때는 0, a/b < c/d 일때는 -1을 반환한다.

function answer(a, b, c, d) {
  let result
  // 구현

  if (a/b > c/d) result = 1
  else if (a/b < c/d) result = -1
  else result = 0
  
  // 구현 종료
  return result;
}

let input = [
  // TC : 1
  [14, 2, 6, 6], 
  // TC : 2
  [6, 7, 8, 9], 
  // TC :3
  [18, 2, 36, 4], 
];

for (let i = 0; i < input.length; i++) {
  console.log(`#${i + 1} ${answer(input[i][0], input[i][1], input[i][2], input[i][3])}`);
}

// output
#1 1
#2 -1
#3 0



3. 윤년 판별기

자연수를 입력으로 받아 윤년이면 true, 아니면 false 값을 반환하는 함수를 작성하시오
윤년이란 아래 두 가지 중 하나라도 참이면 윤년이다.

  • 4의 배수이고 100의 배수가 아닐 때
  • 400의 배수일 때


function answer(year) {
  let result;
  // 구현

  if ((year % 4 === 0) && (year % 100 !== 0)){
      result = true
  } else if (year % 400 === 0){
      result = true
  } else result = false

  // 구현 종료
  return result;
}

let input = [
  // TC : 1
  4,
  // TC : 2
  100,
  // TC : 3
  124,
  // TC : 4
  247,
  // TC : 5
  400,
];

for (let i = 0; i < input.length; i++) {
  console.log(`#${i + 1} ${answer(input[i])}`);
}

// output
#1 true
#2 false
#3 true
#4 false
#5 true



4. ATM 기기

고객이 ATM 기기를 사용하려 한다.
ATM 기기는 5만원 치폐밖에 사용하지 않아 5의 배수 금액만 취급한다.
그리고 인출 할 때 0.5만원(5천원)의 수수료가 필요하다.
인출할 금액과 계좌의 총 금액을 입력 받아 계좌의 남은 금액을 반환하는 함수를 작성하시오.
입력 값 중 첫번째 값은 인출할 금액이고, 두번째 값은 계좌의 금액이다. (입력 값은 만원 단위)
단, 정상적인 인출이 불가능할 경우 돈은 출금되지 않고, 통장의 원래 금액을 반환한다.

function answer(withdraw, total) {
  let result;
  // 구현
  if (withdraw % 5 !== 0 || total - (withdraw + 0.5) < 0) {
    result = total;
  } else {
    result = total - (withdraw + 0.5);
  }

  // 구현 종료
  return result;
}

let input = [
  // TC : 1
  [40, 130.0],
  // TC : 2
  [33, 130.0],
  // TC : 3
  [300, 300.0],
];

for (let i = 0; i < input.length; i++) {
  console.log(`#${i + 1} ${answer(input[i][0], input[i][1])}`);
}

// output
#1 89.5
#2 130
#3 300



5. 네번째 좌표

고객이 평행한 직사각형을 만들기 위해 3점을 선택한 후 네번째 점을 구하는데 고생하고 있다.
고객을 도와 네 번째 점을 구하는 함수를 만드시오.
입력값은 x 좌표 3개, y 좌표 3개가 각각 배열로 입력되며, 네번째 점 [x, y]를 산출하여 반환한다.

function answer(x_arr, y_arr) {
  let result = [];
  // 구현

  if (x_arr[0] === x_arr[1]) {
    result.push(x_arr[2]);
  } else if (x_arr[0] === x_arr[2]) {
    result.push(x_arr[1]);
  } else {
    result.push(x_arr[0]);
  }

  if (y_arr[0] === y_arr[1]) {
    result.push(y_arr[2]);
  } else if (y_arr[0] === y_arr[2]) {
    result.push(y_arr[1]);
  } else {
    result.push(y_arr[0]);
  }

  // 구현 종료
  return result;
}

let input = [
  // TC : 1
  [
    [5, 5, 8],
    [5, 8, 5],
  ],
  // TC : 2
  [
    [3, 1, 1],
    [2, 1, 2],
  ],
  // TC : 3
  [
    [7, 7, 3],
    [4, 1, 1],
  ],
];

for (let i = 0; i < input.length; i++) {
  console.log(answer(input[i][0], input[i][1]));
}

// output
[ 8, 8 ]
[ 3, 1 ]
[ 3, 4 ]


홀수개인 좌표를 삼는 것으로 하는게 야매일 줄 알았는데 정식 풀이도 이거일 줄이야..!

굉장히 비논리적인 코드라고 생각했는데 풀이와 같아서 놀랐다 🤭