ACM 호텔 [ Python ] [ 백준 : 10250 ]

2023. 5. 23. 21:19알고리즘/백준


풀이 및 회고

 

문제가 굉장히 길어서 혼란스러웠던 문제였다. 눈으로만 보면 문제 이해가 안되서 주석으로 간략하게 정리했었다.

결론은 왼쪽부터 채우는 문제라는 것을 알게되고 문제를 풀었다. 이중반복문을 통해서 처음 접근했는데 조건문을 많이 넣어야해

출력하는데 어려움이 있었다. 깔끔하게 포기하고 n이 1일때부터 경우의 수를 적으며 눈으로 확인했다.

규칙을 찾으려 노력했는데 몇가지 규칙이있었다. n 과 h 를 나누면 호수가 나오는 것, 그리고 n 과 h 를 나누었을때 나머지 값이 호텔의 층수가 나온다.

신나서 백준에 제출 해보지만 계속 "틀렸습니다"가 나왔다. 뭐가문제인지 찾아보던중 꼭데기 층을 계산했을 때 값이 이상해졌다.

h 6 w 12 n 12 라고 치면 n % h = 0 이 되어 버린다. 호수도 문제가 생기는데 꼭데기 층은 603 이 나와버린다

이를 해결하기위해 조건문을 넣고 제출하니 해결되었다.

# ACM 호텔

# 호텔 정문으로 부터 걷는 거리가 가장 짧도록 방을 배정
# 호텔 정문은 엘리베이터 바로 앞에 있음(정문에서 엘베까지의 거리 무시)
# W 개의 방, H 층 건물 , 엘리베이터는 가장 왼쪽(101, 201, 301)
# 방과 방사이의 거리는 1
# 호텔의 정면 쪽에만 방이있다.

# 걷는 거리가 같을때는 아래층 방

# N 번째 사람은 몇호실인지 알려주는 것


# h 는 층


'''
h 6 w 12 n 1 = 101
h 6 w 12 n 2 = 201
h 6 w 12 n 3 = 301
h 6 w 12 n 4 = 401
h 6 w 12 n 5 = 501
h 6 w 12 n 6 = 601

h 6 w 12 n 7 = 102
h 6 w 12 n 8 = 202
h 6 w 12 n 9 = 302
h 6 w 12 n 10 = 402
h 6 w 12 n 11 = 502
h 6 w 12 n 12 = 602
'''
# 12 / 6 = 2 + 1 = 3
'''
h 30 w 50 n 1 = 101
h 30 w 50 n 2 = 201
h 30 w 50 n 3 = 301
...
h 30 w 50 n 72 = 1203

'''
t = int(input())

for i in range(t):
    h, w, n = map(int, input().split())    
    m = n // h + 1 # 호텔 호수
    k = n % h # 호텔 층수
    if k == 0: # 꼭데기층 처리
        k = h
        m -= 1
    
    print(f"{k * 100 + m}")