본문 바로가기

알고리즘

백준 10250 ) ACM 호텔 Python

 

문제 링크 :  https://www.acmicpc.net/problem/10250

 

10250번: ACM 호텔

프로그램은 표준 입력에서 입력 데이터를 받는다. 프로그램의 입력은 T 개의 테스트 데이터로 이루어져 있는데 T 는 입력의 맨 첫 줄에 주어진다. 각 테스트 데이터는 한 행으로서 H, W, N, 세 정수

www.acmicpc.net

 

 

 

t = int(input()) 

for i in range(t):
  h, w, n = map(int, input().split()) #t번만큼 입력 받고 출력 수행
  ho = n // h + 1 #호수 계산
  ch = n % h #층 계산
  
  #꼭대기 층 일 경우 (즉 높이로 나누어 떨어질 경우)
  if n % h == 0:
    ho = n//h
    ch = h
  print((ch*100) + ho)

 

t번 만큼 입력받는 부분, 꼭대기 층에 배정될 경우를 제외한 일반적인 경우는 구현했으나

n % h 로 나누어 떨어지는 경우 0이 나와버림 -> 따라서 배정된 방이 꼭대기 층 일 경우 호수와 층을 다르게 작성해야한다.

 

  #꼭대기 층 일 경우 (즉 높이로 나누어 떨어질 경우)
  if n % h == 0:
    ho = n//h
    ch = h
  print((ch*100) + ho)

 

위 부분을 추가해 제출했더니 통과되었다.

 

알고리즘 문제를 풀 때는 일반적인 상황을 먼저 가정하고 구현 한 다음, 0 또는 1이 되는 특수한 상황까지 고려해서 코드를 짜야한다는 깨달음을 얻었다. 그리고 입력받는 부분만 O(n)이고 나머지는 기본 연산이기 때문에 런타임에러도 없었고 문제 풀이 방향성을 잡는데에는 가장 괜찮았던 문제였다.

 

 

 

캐나다에서 codesignal로 문제 풀 때는 테스트 케이스도 충분히 주어지고 UI 도 예쁘고 게임같은 느낌이라 공부할 맛이 났는데... 백준 처음 풀어보니까 어렵기도 하고 자신감이 뚝뚝 떨어지는 경험을 하게 되었다.... 물론 백준이 쉽게 다른 사람들 코드를 못 보게 되어있어서 공부하기엔 훨씬 좋은 환경이긴 하다만 ㅠㅠ