[python_파이썬_Pass]백준_10250번_ACM 호텔_풀이

2024. 8. 19. 20:56코드리뷰

728x90
반응형

공부하는허딩크 : https://www.youtube.com/live/zD3naTrHxto?feature=shared

 

쉽지 않은 문제였다.

 

회사 점심시간을 활용해서 한 문제씩 풀려고 했는데 1시간 넘게 걸렸다.

 

<첫번째 코드>

생각없이 손부터 움직여서 생각나는대로 코드를 작성했다. 

예시의 조건으로는 답이 나오는데 틀렸습니다.


import sys
input = sys.stdin.readline

T = int(input())

for _ in range(T):
  """첫번째 H, 두번째 W, 세번째 N"""
  nums = list(map(int, input().split()))
  floor = nums[2] % nums[0]
  room = nums[2] // nums[0]
  if room < 10:
    print(f'{floor}0{room+1}')
  else:
    print(f'{floor}{room+1}')

 

<최종 코드>

생각을 하면서 풀었다.

처음에 층수를 결정하는 코드와 room을 결정하는 코드를 이원화 해서 각 조건에 맞게 규칙을 찾았다.

층수를 결정하는 것은 어렵지 않았으나 room을 결정하는 방법은 고민을 많이 했다.

import sys
input = sys.stdin.readline

T = int(input())
answer = ""

for _ in range(T):
  """첫번째 H(층), 두번째 W(가로 객실 수), 세번째 N(몇번째 손님)"""
  H, W, N = list(map(int, input().split()))
  answer = ""
  """층 결정"""
  if N % H == 0:
    answer += str(H)
  else:
    answer += str(N % H)

  """호실 결정"""
  room = 1
  """room을 기본 1로 하고 W넘지 않을때 까지"""
  while room <= W:
    """처음 N이 H*room보다 작을 경우 바로 계산"""
    if N <= (H * room):
      if room < 10:
        answer += '0' + str(room)
        break
      else:
        answer += str(room)
        break
    else: #처음 if가 거짓일 경우 room + 1을 해서 조건 만족
      room += 1
 
  """출력"""
  print(int(answer))

 

 

<다른사람 코드 참고>

나와 흐름은 비슷한데 간결하게 요약을 했다.

한번 복습이 필요하다.

import sys
input = sys.stdin.readline
case = int(input())

for i in range(case):
    H, W, N = map(int, input().split())
    Y = N % H
    X = N // H + 1
    if N % H == 0:
        Y = H
        X = N // H
    if X <= 9:
        X = '0' + str(X)
    print(str(Y) + str(X))
728x90
반응형