10250: ACM 호텔 - Python

beaver.zip·2024년 12월 8일
0

[알고리즘] 백준

목록 보기
16/45

문제

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

주어진 테스트케이스에 더해 두 개의 테스트케이스를 추가했다.

# 입력
6 12 10
30 50 72
6 12 53
6 12 54

# 출력
402
1203
509
609

브론즈3 문제 치곤 고려할 부분이 많은 것 같다.

풀이 1

for _ in range(int(input())):
    H, W, N = map(int, input().split())
    
    if N % H: # 예시) 6 12 10
        x = N % H
        y = N // H + 1
    else: # 예시) 6 12 54
        x = H
        y = N // H

    if y < 10:
        print(str(x) + "0" + str(y))
    else:
        print(str(x) + str(y))

방 배정 방법을 어려운 말로 적어놨지만,
101, 201, 301, ..., H01, 102, 202, 302, ...처럼 한 호를 다 채운 뒤 다음 호를 배정한다는 뜻이다.

풀이 2 (참고)

for _ in range(int(input())):
    H, W, N = map(int, input().split())
    x = N % H
    y = N // H + 1
    if x == 0:
        x = H
        y -= 1
    print(x * 100 + y)

풀이 1보다 훨씬 간결하고 좋은 풀이다. 대부분의 블로그에서 이런 식의 코드를 제시했다.
다른 것보다 x * 100을 생각하지 못한 게 많이 아쉽다.


오늘의 교훈

  • 형 변환을 남발하지 말자. 사칙 연산으로 해결할 수 있는 방법을 고민하자.
  • 중복되는 코드를 최대한 피할 수 있는 방법을 고민하자.
profile
NLP 일짱이 되겠다.

0개의 댓글