백준 10250 ACM호텔 JavaScript

0min·2021년 6월 17일
0

🔥백준 10250 ACM호텔

https://www.acmicpc.net/problem/10250


// const fs = require('fs');
// const input = fs.readFileSync('/dev/stdin').toString().trim().split('\n');

const input = ['2', '6 12 10', '30 50 72'];
const T = parseInt(input.shift()); // Case 수


// solution 1 N(번째손님)이 H(층수)보다 클 경우 N - H 를 통해 구해주는 방법.
for (let i = 0; i < T; i++) {
  const HWN = input[i].split(' ');
  let H = parseInt(HWN.shift()); // 층
  HWN.shift(); // 가운데 요소는 제거해준다.
  let N = parseInt(HWN.shift()); // N번째 손님
  let roomCnt = 1; // 엘리베이터에서 몇번째로 떨어져있는지.
  
  while (N > H) {
    roomCnt++;
    N = N - H;
  } // N번째 손님이 층수보다 클 경우 roomCnt를 ++ 해주고 N 에서 H를 빼준다.
  if (roomCnt < 10) {
    console.log(`${N}0${roomCnt}`);
  } else {
    console.log(`${N}${roomCnt}`);
  }
}


** ** ** **

  
// solution 2 N / H 와 N % H 를 통해 구해주는 방법
for (let i = 0; i < T; i++) {
  const HWN = input[i].split(' ');
  let H = parseInt(HWN.shift()); // 층
  HWN.shift(); // 가운데 요소는 제거해준다.
  let N = parseInt(HWN.shift()); // N번째 손님
  
  const floor = N % H === 0 ? H : N % H; // ex) 12번째손님 % 5층 = 2 이기때문에 이 손님은 2층에 머물게 된다.
  const roomNum = parseInt.isInteger(N / H) ? N / H : Math.ceil(N / H); // 12번째 손님 / 5층은 2.4이다. 이것은 2번째를 넘어서는 그룹 === 3번째 그룹이다. istInteger()를 통해 정수인지 확인을 하고 그렇지 않을 경우 Math.ceil()을 통해 올림하여 정수를 받아온다. 
  
  // 뒤는 solution1이랑 동일하게 console.log() 해준다.
}


🧵풀이

solution1

N(번째손님)이 H(층수)보다 클 경우 N - H 를 통해 구해주는 방법.
point1 roomCnt(엘리베이터에서 방까지의 거리)라는 것을 인지.

solution2

N / H (구역) 와 N % H (층수) 를 통해 구해주는 방법
point1 N / H 가 소수점이 존재하는 경우 올림을 해준다.
point2 N % H === 0일 경우 끝층인 H에 머문다는 것.


공부하는 중이라 글이 깔끔하지 못하거나 틀린부분이 있을 수 있습니다.
더 좋은 방법이 있거나 부족한 부분이 존재한다면 말씀해주십쇼😮

profile
🐔이되고 싶은 🐥..

0개의 댓글