728x90
반응형

10250 문제

VERSION 2.0

 

 

import sys
T = int(sys.stdin.readline()) #테스트케이스
res = []
for i in range(T):

    A = list(map(int, sys.stdin.readline().rstrip().split()))
    H =  A[0] #층수
    W = A[1] #각층의 방수
    N = A[2] #손님의 수

    son_floor = N%H
    if son_floor == 0:
        son_floor += H

    son_hosu = N//H
    if son_hosu < N/H:
        son_hosu+=1
    res.append("{}{:02d}".format(son_floor,son_hosu))
for i in res:
    print(i)

res.append("{}{:02d}".format() 형식 잘 기억해두자!!!!

 

 

 

 

VERSION 1.0

#W개의 방이 있는 H층 건물
#1<= H,W <=99
#방번호 :  YXX 나 YYXX 형태인데 여기서 Y 나 YY 는 층 수를 나타내고 
# XX 는 엘리베이터에서부터 세었을 때의 번호를 나타낸다. 
#다만 걷는 거리가 같을 때에는 아래층의 방을 더 선호한다. 예를 들면 102 호 방보다는 301 호 방을 더 선호하는데, 
# 102 호는 거리 2 만큼 걸어야 하지만 
# 301 호는 거리 1 만큼만 걸으면 되기 때문이다. 
# 같은 이유로 102 호보다 2101 호를 더 선호한다.
# N 번째로 도착한 손님에게 배정될 방 번호를 계산하는 프로그램이다. 
# 첫 번째 손님은 101 호, 두 번째 손님은 201 호 등과 같이 배정한다. 그림 1 의 경우를 예로 들면, 
# H = 6이므로 10 번째 손님은 402 호에 배정해야 한다.
import sys
import math

i=0
room=[]
T = int(sys.stdin.readline())
while i<T:
    H,W,N = map(int,sys.stdin.readline().split())#H층 W개방, N번째 도착손님

    a = N%H
    b = math.ceil(N/H)
    if a == 0:
        a = H
    #print("{}{:02d}".format(a,b))
    room.append("{}{:02d}".format(a,b))
    i+=1
for i in room:
    print(i) 
#10%6 = 4 
# 100%7 = 6
#6 12 10 ==>72개의 룸 
#101 201 301 401 501 601
#102 202 302 402 502 602
#7 24 100
#101 201 301 401 501 601 701 ==>7개
#7개*24 = 158개의 룸
#98개(14번째)
#115 215
#30 50 72 ==>30층 50호실 72번째 손님
#72%30 = 12
#72//30 = 2+1 =3
#2004호
#101~~~~~3001 (30개)
#102 ~~ 3002(30개) 
# 103~1003(10개) 1103 1203
#20 40 100
#101~2001(20개)
#105~1905(20*4 + 19) 2005

문제파악 및 알고리즘 분석단계

1. W개의 방이 있는 H층 건물

2. 1<= H,W <=99

3. 방번호 :  YXX 나 YYXX 형태인데 여기서 Y 나 YY 는 층 수를 나타내고 XX 는 엘리베이터에서부터 세었을 때의 번호를 나타낸다. 

4. 다만 걷는 거리가 같을 때에는 아래층의 방을 더 선호한다. 예를 들면 102 호 방보다는 301 호 방을 더 선호하는데, 102 호는 거리 2 만큼 걸어야 하지만  301 호는 거리 1 만큼만 걸으면 되기 때문이다. 같은 이유로 102 호보다 2101 호를 더 선호한다.

5. N 번째로 도착한 손님에게 배정될 방 번호를 계산하는 프로그램이다. 

6. 첫 번째 손님은 101 호, 두 번째 손님은 201 호 등과 같이 배정한다. 그림 1 의 경우를 예로 들면, 

 H = 6이므로 10 번째 손님은 402 호에 배정해야 한다.

==================

알고리즘 분석단계

==================

1. 10%6 = 4  100%7 = 6

2. 6 12 10 ==>72개의 룸(H층 W개의 호실, N번째 손님)

101 201 301 401 501 601

102 202 302 402 502 602

.

.

.

3.7 24 100 ==> 7층 24개호실 100번째 손님

101 201 301 401 501 601 701 ==>7개

올림(100//7) = 15

100%7 = 2

7개*24 = 158개의 룸

98개(14번째)

115 215

==> 215 배정

4.30 50 72 ==>30층 50호실 72번째 손님

72%30 = 12

72//30 + 1 = 2+1 =3

101~~~~~3001 (30개)

102 ~~ 3002(30개) 

103~1003(10개) 1103 1203

==> 1203호

5.20 40 100 ==>20층 40호실 100번째 손님  

100%20 = 0 ==> 0일경우 층수 그대로 출력

100//20 = 5

101~2001(20개)

.

.

.

.104~2004(20개 * 4)

105~1905  2005

==================

코딩

==================

17번째줄 : TestCase 횟수 입력

18번째줄: i값이 T보다 작을경우 반복문 계속 실행

19번째줄: H,W,N 값 받기

 

21번째줄 : a = N%H ==>N번째도착 손님 % H층의 나머지(층수)

22번째줄 : b = 올림(N/H) ==> N번째 도착 손님 / H층의 몫의 올림값 (호수)

23~24번째줄: 층수의 값이 0일경우 층수 그대로 출력

 

 

★★★KEY POINT★★★

1. N번째도착 손님 % H층의 나머지(층수) 에 대한 이해

2.  N번째 도착 손님 / H층의 몫의 올림값 (호수)

728x90
반응형

+ Recent posts