Breaking

2019년 2월 26일 화요일

Baekjoon 10250번 ACM 호텔 python

Baekjoon 10250번 ACM 호텔 python




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

문제를 읽어보면 알겠지만예를 들어 설명하는 편이 쉬울 것 같다.
가령 Height=3, Width=6인 다음의 표를 보자.

301 302 303 304 305 306
201 202 203 204 205 206
101 102 103 104 105 106

조건을 읽어보면 기본적인 순서는 세로 즉 Height를 기준으로 일의 자리 숫자가 증가하는 것을 볼 수 있는데 순서는 다음과 같다.

3 6 9 12 15 18
2 5 8 11 14 17
1 4 7 10 13 16

즉 다시말해 우리가 N번째의 사람이 어느 호실을 선택할 지를 판단하기 위해서는 우선 N을 Height인 H로 나눈 몫 + 1을 십의 자리와 일의 자리에 해당하게 한 다음 층에 대한 것은 N을 Height인 H로 나눈 나머지로 정의하면 딱 맞다.

다만 여기에는 함정이 하나 있는데 이렇게 설정할 경우 나머지가 0인 경우가 생길 때 오류가 생기는데 가령 지금의 상황에서 N=6이라고 가정해보자
그럼 N % H =0이 되고 이에 따른 N // H +1 = 6 // 3 +1 = 3으로 오류가 생기기 때문에 이에 맞는 조건문을 만들어야 문제가 생기지 않는다.

자세한 내용은 아래 코드를 통해 확인하길 바란다.

참고로 첫 번째 코드는 string으로 변환해서 십의 자리를 0으로 채운 경우이고
두 번째 코드는 기존의 int에 100을 곱해서 그냥 숫자로 바로 나타낸 것으로 두 번째 코드가 더 깔끔하다는 사실을 알 수 있다.


#첫 번째 코드
T=int(input())

for i in range(T):
    H,W,N=map(int, input().split())
    one=N // H + 1
    floor = N % H
    if not floor:
        floor = H
        one = N // H
    if one < 10:
        roomNum = int(str(floor)+'0'+str(one))
    else:
        roomNum=int(str(floor)+str(one))
    print(roomNum)


#두 번째 코드
T=int(input())

for i in range(T):
    H,W,N=map(int, input().split())
    one=N // H + 1
    floor = N % H
    if not floor:
        floor = H
        one = N // H
    roomNum = floor * 100 + one
    print(roomNum)

ALL RIGHT RESERVED TWINSTARINFO