Altiora Petamus

ACM 호텔 본문

1day-1algorithm

ACM 호텔

Haril Song 2021. 4. 20. 17:30

Reference

문제풀이

처음 문제로 보이는 그림을 보면 2차원 배열을 사용해서 푸는걸까라는 생각이 들기 쉽다. 물론 2차원 배열로도 풀 수 있지만, 훨씬 쉬운 방법을 통해 풀 수 있다.

  • 문제를 잘 읽어보면 6층 호텔의 10번째 손님은 4층의 객실에 배정된다. 만약 14번째 손님이라면? 2층에 배정된다. 즉 N / H 의 나머지값이 배정받을 객실의 층 수가 된다.
  • 비슷한 로직으로 객실의 번호는 몫 + 1이 된다.

그렇다면 나머지가 0일 경우엔 어떻게 해야할까? 6번째 손님의 경우 601호에 배정되야 하지만, 나머지가 0이므로 층수를 알 수가 없어진다. 12번째 손님도 마찬가지이다.

  • 나머지가 0일 경우 호텔의 층 수가 배정받을 객실의 층 수가 된다.
  • 객실 번호는 몫이 된다.
T = int(input())
for _ in range(T):
    H, W, N = map(int, input().split(" "))

    X = N % H
    Y = N // H + 1

    if X == 0:
        X = H
        Y = N // H
	# Y -= 1 도 가능
    print(f'{X * 100 + Y}')

 

 

이런 문제는 비교적 쉬운 문제에 속하는 것 같다. 함정에 빠지지 않도록만 주의하자.

TODO & FIXME

  • 예외 체크 과정에서 불필요한 로직을 많이 사용했었다. 노션에 풀이과정을 적다가 뒤늦게 깨닫게 되어 수정했는데, 간결한 코드를 유지하기 위해서 신경을 쓸 필요가 있겠다.
  • 자릿수 체크는 자릿수의 해당하는 숫자를 곱하면 된다는 것을 자주 깜박한다. 이걸 몰라도 풀 수 있는 문제였지만, 잊지 않기 위해 다시 기록해둔다.

'1day-1algorithm' 카테고리의 다른 글

셔틀버스  (0) 2021.04.26
신규 아이디 추천  (0) 2021.04.23
달팽이는 올라가고 싶다  (0) 2021.04.19
분수찾기  (0) 2021.04.18
캠핑  (0) 2021.03.01