[BOJ 10250]ACM 호텔(Python)

Gooder·2021년 4월 15일
0

알고리즘_문제풀기

목록 보기
4/25

문제링크

문제 링크

풀이 전 계획 및 생각

그림 1. H = 6 이고 W = 12 인 H × W 호텔을 간략하게 나타낸 그림

문제의 조건을 보면 손님들은 걸어서 가장 짧은 거리에 있는 방을 선호한다. 즉, 1호에 해당하는 방들이 다 배정된 다음에 2호에 해당하는 방들이 배정되며, 방은 1층부터 꼭대기층 순서로 배정된다는 것을 알 수 있다.
그러므로 N번째 사람이 배정받는 방의 호수는 N을 H로 나눈 몫을 이용해서 구할 수 있다. 나누어 떨어지지않는 경우에는 N//H +1, 나누어 떨어지는 경우에는 N//H를 하면 된다.
또한 N번째 배정받는 방의 층수는 N을 H로 나눈 나머지를 이용해서 구할 수 있다. 나머지가 0인 경우에는 나누어 떨어지는 경우이므로, 최고층에 배정해주면 된다.

풀이

import sys
test_case = int(sys.stdin.readline())
for _ in range(test_case):
    h,w,n = map(int, sys.stdin.readline().split())
    floor = n%h
    room_num = 0
    if floor == 0:
        floor += h
    if n % h == 0:
        room_num = n//h
    else:
        room_num = n//h + 1
    print(floor*100 + room_num)

풀이하면서 막혔던 점과 고민했던 점

처음에 어떻게 풀지 고민을 하다가 숫자들을 순서대로 나열을 해보면서 규칙성을 파악했다.

풀이 후 알게된 개념과 소감

직접 손으로 써보면서 규칙성을 파악하는 것이 필요하다는 것을 배웠다.

profile
세상을 변화시킬 신스틸러 서비스를 만들고싶은 개발자 Gooder 입니다.

0개의 댓글