알고리즘
[백준 10250] ACM 호텔 - 수학, 구현, 사칙연산
kyeongjun-dev
2021. 12. 23. 12:29
코드1 - 배열 노가다
def func():
h, w, n = map(int, input().split())
arr = [ [num+1+((floor+1)*100) for num in range(w)] for floor in range(h) ]
cnt = 1
flag = False
for room in range(len(arr[0])):
for floor in range(len(arr)):
if cnt == n:
print(arr[floor][room])
flag = True
break
cnt += 1
if flag:
break
n = int(input())
for _ in range(n):
func()
결과
설명
- 101호 부터 시작하도록 배열을 선언해준다.
- 101호, 201호, 301호 ... 순서로 n까지 조회한다
코드2 - 수학
def func():
h, w, n = map(int, input().split())
if n % h == 0:
floor = h
num = n// h
else:
floor = n%h
num = n // h + 1
print(floor*100 + num)
n = int(input())
for _ in range(n):
func()
결과
설명
- 층수(floor)는 n을 h로 나누면 된다. 이때 나머지가 층수가 되는데, 나누어 떨어질 때는 floor가 0이 돼서 h가 되어야 함
- 방번호(num)는 몫인데, 나누어 떨어질 때는 h층이어야 해서 n//h 몫이 방번호가 된다