리셋 되지 말자

[백준 10250] ACM 호텔 - 수학, 구현, 사칙연산 본문

알고리즘

[백준 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 몫이 방번호가 된다
Comments