이 문제는 n과 k가 1부터 14 사이의 작은 수여서 O(n2)의 시간복잡도가 나오더라도 이중 반복문을 사용해 풀었다.
# 2775 부녀회장이 될테야
T = int(input())
for tc in range(1, T+1):
k = int(input())
n = int(input())
house = [[0 for _ in range(n+1)] for z in range(k+1)]
# 0층의 room들은 1, 2, 3 순으로 사람이 들어가 있다.
for r in range(n+1):
house[0][r] = r
# k층 n호실에 사는 사람 수 = k-1층 1호실~n호실까지의 사람 수이므로
# 이중 반복문을 이용한다.
for floor in range(1, k+1):
for room in range(1, n+1):
house[floor][room] = sum(house[floor-1][0:room+1])
print(house[k][n])
다른 언어로 풀이하신 분들 중에는 재귀로 푸신 분들도 많은데, 파이썬 언어 특성상 재귀를 사용하면 시간 초과가 나올 가능성이 높아서 파이썬 쓰시는 분들은 나처럼 이중 반복문을 쓰신 경우가 많은 것 같다.
'개발 공부 > 알고리즘 문제풀이' 카테고리의 다른 글
[백준] 2581. 소수 (0) | 2022.07.31 |
---|---|
[백준] 1978. 소수 찾기 (0) | 2022.07.31 |
[백준] 10250. ACM 호텔 (0) | 2022.07.25 |
[백준] 2869. 달팽이는 올라가고 싶다 (0) | 2022.07.25 |
[백준] 1193. 분수찾기 (0) | 2022.07.23 |