# 10250번 ACM 호텔
# 케이스 입력받기
t = int(input())
# h: 호텔의 층수, w: 각 층의 방 수, n: 몇 번째 손님인지
for i in range(t) :
h, w, n = map(int, input().split())
print(n % h if (n%h)!=0 else h, end='')
print("%02d" %(n//h+1) if (n%h)!=0 else "%02d" %(n//h))
각 층의 낮은 호수부터 채워 나가는 식으로 해결했다.
첫번째 print
-> n(손님) % h(층수) 로 나머지를 구해 층수를 구하였다.(나머지가 0이라면 호텔 맨 위층에 마지막 손님이 들어간 것이니 h 출력)
두번째 print
-> n % h 값이 0이 아니면 n // h +1 (나머지로 떨어지는 손님들을 다음 호실에 채워야하니 +1을 해주어야함) ,
0이면 n//h 식을 통해 호수를 구했다.
또한 호실은 두자리가 나와야하므로(1호 -> 01호 이렇게) 문자열 포매팅을 이용하였음.
처음엔 문자열로 바꾸고 다시 int로 바꾸고 또 문자열을 더해주는 코드로 짰는데 런타임 에러가 났다.
그래서 타입 변환을 없애고 %02d인 문자열 포매팅으로 해결해보자 + if문을 print안에 다 집어 넣자 해서 이렇게 짜게 되었다.
# 2775번 부녀회장이 될테야
# 테스트 케이스 입력받기
t = int(input())
for i in range(t) :
# k(층) n(호) 입력받기
k = int(input())
n = int(input())
if n != 1 :
# 0층 리스트로 만들기
apart = list(range(1, n+1))
for j in range(k):
for z in range(1,n):
apart[z] = apart[z-1]+apart[z]
print(apart[-1])
else :
print(1)
1. apart에 0층 n호실까지를 리스트로 받은 뒤,
2. 층수가 높아지면서, 이전 호실(apart[z-1]) + 바로 아래 층의 호실(apart[z]) 하여 해당 호실에 인원을 바꿔주는 식을 사용했다.
n(호)가 1이면 사람 수는 1이므로, n이 1이라면 바로 1을 출력하도록 하였다.
'Algorithm > Programmers' 카테고리의 다른 글
[Python] 신규 아이디 추천 (0) | 2021.04.05 |
---|---|
[Python] 크레인 인형 뽑기 게임 (0) | 2021.04.05 |
[Python] 두 개 뽑아서 더하기 (0) | 2021.04.04 |
[Python] 기본 수학 1 (0) | 2021.02.11 |
[Python] 기본 수학 1 (0) | 2021.01.27 |