[JS]11. 조건문 문제
in JS
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 ]
홀수개인 좌표를 삼는 것으로 하는게 야매일 줄 알았는데 정식 풀이도 이거일 줄이야..!
굉장히 비논리적인 코드라고 생각했는데 풀이와 같아서 놀랐다 🤭