[Algorithm] [백준] 2775

myeonji·2022년 2월 15일
0

Algorithm

목록 보기
41/89

n(호)가 최대 14호까지 조건이 되어있길래 이중 리스트로 한 층당 14호까지 인덱스를 만들어야 하나.. 고민했다.
예를 들어 apart = [[1층 1~14호], [2층 1~14호], ..., [?층 1~14호]] 처럼 말이다.

그런데 어차피 k와 n을 입력받으면, 0~k층마다 각각 n개의 호수가 있는거나 다름없었다.

k = 2, n = 3 일 때를 예로 들면,

apart = [[1, 2, 3],
		[1, 3, 6],
        [1, 4, 10]]

이렇게 나오면 된다. 하지만 저렇게 모든 층이 출력되는 것이 아니고 한 층을 계속 바꿔주는 것이다.
결론적으로 마지막 apart 리스트 값은 아래와 같이 나와야 한다.

apart = [1, 4, 10]

<풀이>

따라서 0층도 n호 까지만 미리 만들어두고, k와 n 이중 for문을 돌렸다.

import sys
input = sys.stdin.readline

t = int(input())

for _ in range(t):
    k = int(input())  # 층
    n = int(input())  # 호
    f = [x for x in range(1, n+1)]
    for i in range(k):
        for j in range(1, n):
            f[j] += f[j-1]
    print(f[-1])

성공 !! 😜

0개의 댓글