캐또's coding

10250 - ACM 호텔 - node.js 본문

기초 공부/백준 문제 풀이

10250 - ACM 호텔 - node.js

JS_K_coding 2022. 8. 25. 11:03

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

 

10250번: ACM 호텔

프로그램은 표준 입력에서 입력 데이터를 받는다. 프로그램의 입력은 T 개의 테스트 데이터로 이루어져 있는데 T 는 입력의 맨 첫 줄에 주어진다. 각 테스트 데이터는 한 행으로서 H, W, N, 세 정수

www.acmicpc.net


앞서 풀었던 지그재그처럼 그 안에 있는 분수와 별개로 순서가 어떻게 되는지 생각해보면 된다. 그리고 그 순서에 해당하는 룸넘버를 뽑아주면 된다.

H=6일때 101부터 601 순서로 그 다음은 102부터 602로 진행된다. 

 

입력값으로 들어온 첫 번째 줄은 테스트케이스의 갯수 T다.

입력값으로 들어온 두 번째 줄부터 T개의 테스트케이스가 들어온다.

각 테스트케이스에는 높이인 H, 넓이인 W, N번째 손님을 나타내는 숫자가 들어온다.

방의 총 갯수는 H의 배수로 W번 반복된 수다.

각 테스트케이스마다 방 번호를 출력한다.

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

for (let i = 1; i < input.length; i++) {
  let [H, W, N] = input[i].split(" ").map(Number);
  let height = N % H;
  if (height == 0) height = H;
  let lines = Math.ceil(N / H);
  if (lines < 10) lines = String(0) + lines;
  console.log(String(height) + lines);
}

 

이른바 맞왜틀을 제일 많이 했던 문제, 분명 제대로 계산이 나올법 한데 왜 안 나오는 것인지, 심지어 다른 사람들의 코드를 봐도 몰랐던 문제였다.

VSCode를 통해 height와 lines를 따로 출력해보고 나서야 문제를 알았다. height는 Number였고, lines는 string이었던 것이다. javascript를 쓰는 사람들 혹은 유튜브에서 정말 많이 봤던 javascript의 문제점을 완전히 잊고 있었다. 문자와 숫자의 계산이 매우 복잡하게 된다는 점.... 둘 다 같은 string으로 해준 뒤 둘을 더해주는 방식으로 출력을 바꿨더니 정답으로 나오게 되었다.

어이없는 실수로 시간을 잡아먹었던 문제..

Comments