min
알고리즘 선택 트랙 [3일차] 본문
<문제>
백준 acm 호텔 10250번 문제
<문제 회고>
오늘은 2개의 조로 나누어서 각 조마다 2일차 문제를 하나씩 잡아서 풀었다.
나는 탁승현님과 함께 acm 호텔에 대해서 풀게 됐다.
탁승현님이 네비게이터 맡게 되었고 나는 드라이버 역할 맡게 되었다.
처음 문제를 읽어봤을 때는 나누기를 통한 몫과 나머지를 이용할려고 했다.
즉 몫과 나머지를 층과 호로 나누어서 생각을 했고 다음과 같은 코드로 작성했다.
n = int(input())
for _ in range(n):
H,W,N = map(int,input().split())
몫,나머지 = divmod(N,H)
print(나머지*100 + 몫 + 1)
하지만 위 코드는 통과하지 못했다.
왜냐하면 만약 2 5 8이라는 데이터가 주어지면 5라는 답이 출력되기 때문이다.
즉 나머지가 0일때를 처리하는 로직을 생각하지 못한것이다.
그래서 조건문을 통해 나머지가 0일때의 처리할 로직을 생각해보았다.
그리고 나머지가 0일때의 실제 위치를 보니 다 꼭대기 층에 있다는 것을 확인했고 호는 몫이라는 것을 알게 되었다.
그래서 결국 층은 H가 되는 것이고 호는 몫이 되는 것이었다.
위 로직을 통해서 바꾼 코드는 다음과 같다.
n = int(input())
for _ in range(n):
H,W,N = map(int,input().split())
몫,나머지 = divmod(N,H)
if 나머지 == 0:
print(H*100 + 몫)
else:
print(나머지*100 + 몫 + 1)
위 코드를 제출하니 정답이 뜨게 되었다.
결국에는 나머지가 0일때를 처리해줘야 하는 것이 핵심이었다.
이번 문제를 통해서 좀더 많은 데이터를 돌려보면서 처음 생각한 알고리즘이 맞는지 아닌지를 확인하는 절차가 필요하다는 것을 알게 됐다.
'알고리즘' 카테고리의 다른 글
알고리즘 선택 트랙 [3일차] (0) | 2023.05.25 |
---|---|
소수 구하기 문제 (1) | 2023.05.25 |
알고리즘 선택 트랙 [2일차] (0) | 2023.05.23 |
알고리즘 선택 트랙과정 [1일차] (1) | 2023.05.22 |
그래프 탐색 알고리즘(dfs, bfs) (0) | 2023.01.28 |