[JS]12. 종합 문제 (1)




1. 최솟값 구하기

두 수의 정수를 입력 받아 최소값을 반환해주는 함수를 구현하시오.



function answer(x, y) {
  let min;
  // 구현
  min = x >= y ? y : x
  // 구현 종료
  return min;;
}

let input = [
  // TC : 1
  [16, 3],
  // TC : 2
  [-3, 1],
  // TC :3
  [1000, 525],
];

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

// output
// #1 3
// #2 -3
// #3 525



2. 제곱 구현

두 수 x, y를 입력 받아 x의 y 제곱 값을 반환해주는 함수를 구현하시오 제곱 연산자(**)는 사용하지 않는다.

function answer(x, y) {
  let result = 1;
  // 구현
  //   result = Math.pow(x, y)
    for (let i = 0; i < y; i++){
        result *= x
    }
  // 구현 종료
  return result;
}

let input = [
  // TC : 1
  [2, 3],
  // TC : 2
  [4, 6],
  // TC :3
  [1, 100],
];

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

// output
// #1 8
// #2 4096
// #3 1



3. 놀이기구 입장 제한

본 놀이기구는 안전상의 이유로 키 150cm 이상만 탈 수 있다.
탑승하려는 고객이 놀이기구를 탈 수 있는지 판단하는 함수를 구현하시오.
입력 값은 객체로 이름/나이/키가 입력되며, 출력 값은 탑승가능 시 true, 불가능 시 false를 반환한다.

function answer(user) {
  let permit;
  // 구현
  permit = user.height >= 150 ? true : false
  // 구현 종료
  return permit;
}

let input = [
  // TC : 1
  { name: "john", age: 27, height: 181 },
  // TC : 2
  { name: "alice", age: 12, height: 148 },
  // TC :3
  { name: "bob", age: 14, height: 156 },
];

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

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



4. 요일 구하기 ⭐️

날짜를 입력 받아 요일을 반환해주는 함수를 구현하시요.
입력 값은 문자형 날짜(datestring) 값이 입력되며, 문자형 형태의 요일을 반환한다.



function answer(str) {
   // 이 접근법 기억해두기!👍
  let week = new Array(
    "일요일",
    "월요일",
    "화요일",
    "수요일",
    "목요일",
    "금요일",
    "툐요일"
  );
  let day;
  // 구현
  day = week[new Date(str).getDay()]
  // 구현 종료
  return day;
}

let input = [
  // TC : 1
  "2021-01-27",
  // TC : 2
  "2021-02-27",
  // TC :3
  "2021-03-14",
];

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

// output
// #1 수요일
// #2 툐요일
// #3 일요일



5. 중복 단어 제거

중복 단어를 제거해주는 함수를 구현하시오.
입력 값은 배열 형태로 요소들은 문자형이 입력되고, 중복 단어가 제거된 배열을 반환된다.

function answer(arr) {
  let new_arr = [];
  // 구현
  let set = new Set(arr);
  for (let item of set) {
    new_arr.push(item);
  }
  // 구현 종료
  return new_arr;
}

let input = [
  // TC : 1
  ["john", "alice", "alice"],
  // TC : 2
  ["Hello", "hello", "HELLO", "hello"],
  // TC :3
  ["kiwi", "banana", "mango", "kiwi", "banana"],
];

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

// output
// #1[ 'john', 'alice' ]
// #2[ 'Hello', 'hello', 'HELLO' ]
// #3[ 'kiwi', 'banana', 'mango' ]

다른 풀이 1

function answer(arr) {
  let new_arr = [];
  // 구현
  new.Set(arr).forEach(function (item) {
    new_arr.push(item)
  })
  // 구현 종료
  return new_arr;
}

다른 풀이 2

function answer(arr) {
  let new_arr = [];
  // 구현
  new_arr = Array.from(new Set(arr))
  // 구현 종료
  return new_arr;
}