728x90
반응형
- 문제
- 잘못된 풀이
문제를 보자마자 recursive(재귀) 알고리즘이 생각났다.
Recursive로 풀어보고자 했는데, 실패했다.
- 올바른 풀이
T = int(input())
for i in range(T):
k = int(input()) # 층
n = int(input()) # 호
floor_0 = [i for i in range(1, n+1)] # 0층 사람 수
for j in range(k):
for p in range(1, n):
floor_0[p] += floor_0[p-1]
print(floor_0[-1]) # 0번 인덱스부터 시작하기 때문에 -1
Recursive가 아닌 풀이 방법을 모색했다.
0층을 기준으로 1호는 1명, 2호는 2명, 3호는 3명 ... i호는 i명의 사람이 있음을 나타내는 floor_0 list를 만들었다.
그리고 0층부터 차근히 사람 수를 구하는 알고리즘을 생각했다.
3층: 1 5 15 35 70 ... 1+5+ ... +(1+3+...+(1+2+...+n))
2층: 1 4 10 20 35 ... 1+3+ ... +(1+2+...+n)
1층: 1 3 6 10 15 ... 1+2+...+n
0층: 1 2 3 4 5 ... n
1층 1호 = 0층 1호
1층 2호 = 1층 1호 + 1층 2호
1층 3호 = 1층 1호 + 1층 2호 + 1층 3호
이런식으로 현재 호수는 이전 호수를 모두 더한 값이므로,
이중 for문을 통해 현재 호수를 기준으로 이전 호수를 모두 더해주었다.
728x90
'자료구조 및 알고리즘 > 백준' 카테고리의 다른 글
[python] 1929. 소수 구하기 (0) | 2023.01.12 |
---|---|
[python] 2581. 소수 (0) | 2023.01.12 |
[python] 1978. 소수 찾기 (2) | 2023.01.12 |
[python] 2839. 설탕 배달 (0) | 2023.01.09 |
[python] 2869. 달팽이는 올라가고 싶다 (0) | 2023.01.09 |