반응형
풀기 힘들었던 문제만 tistory에 올리고 있습니다. 더 많은 문제풀이 코드는 github에 있습니다:)
https://www.acmicpc.net/problem/10250
분류
- 구현
- 사칙연산
- 수학
입력예제1
2
6 12 10
30 50 72
출력예제1
402
1203
생각 정리
- N은 손님이 방문한 번째 수, H는 높이(층 수), W는 가로(호실 수) 이다.
- 층과 호수에 대한 수학적 규칙을 발견해야 한다. (나는 이렇게 풀지 못했다지..)
- 손님이 머물 호수는 N을 전체 층수로 나눈 몫이다.
- 예를 들면, 만약 전체 5층일 때, 20번째 온 손님은 20/5 == 4번째 호수! 즉 4바퀴를 돌고 온 호수이다.
그런데, 몫이 0일 때 1호실이니까 +1을 해줘야한다.
- 예를 들면, 만약 전체 5층일 때, 20번째 온 손님은 20/5 == 4번째 호수! 즉 4바퀴를 돌고 온 호수이다.
- 손님이 머물 층 수는 N을 전체 층수로 나눈 나머지이다.
- 예를 들면, 만약 전체 6층일 때, 20번째 손님은 20%6 == 2번째층! 6층 한바퀴,6층 두바퀴, 6층 세바퀴 째 2번째 층! 그림으로 봐보면
다시 예를 들어보자. 만약 전체 6층일 때, 12번째 손님은 12%6==0? 0번째 층..? 예외가 있다!
만약 나머지가 0일 때 생각해보면 그 층의 마지막 층인 것이다.(위 그림을 참고) 그러므로 floor는 0이 아닌, 6번째 층, 즉 H가 되겠다.
그럼 호수는? 이미 12//6 + 1 로 계산해줬지만,
예외의 경우, 다음으로 넘어가지않으므로 -1을 다시 해줘야한다.
if floor == 0:
floor = H
ho -= 1
전체 코드
T = int(input())
for t in range(T):
H, W, N = map(int,input().split()) # 전체층수, 전체 호수, 방문 순서
floor = N % H # 손님이 사용할 층수
ho = N // H +1 # 몫이 0일 때 1호실이니까 +1을 해줘야함
# 예외 - 높이가 딱 맞아 떨어질 때
if floor == 0:
ho -= 1
floor = H # 0이 아닌 가장 꼭대기층!
print(floor*100+ho)
반응형
'Algorithm & Data Structure > 문제 풀이' 카테고리의 다른 글
[9012] 괄호 (Python) (0) | 2021.06.21 |
---|---|
[18258] 큐 2 (Python) (0) | 2021.06.18 |
[1543] 문서 검색 (Python) (0) | 2021.06.15 |
[8958] OX퀴즈 (0) | 2020.09.17 |
[1546] 평균 (0) | 2020.09.16 |