Algorithm/Programmers

[Python] 기본수학 1

느낌표 공장장 2021. 2. 2. 12:51

# 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