반응형
문제
https://www.acmicpc.net/problem/2775
🐍파이썬
import sys
t = int(sys.stdin.readline())
for _ in range(t):
k = int(sys.stdin.readline()) #k층
n = int(sys.stdin.readline()) #n호
apt = [[0]*(n+1) for _ in range(k+1)]
for i in range(k+1): #0층~k층
for j in range(1, n+1): #1호~n호
if i == 0: #0층
apt[i][j] = j #호실의 수만큼 사람이 입주(1호에는 1명, 2호에는 2명...)
else: #0층이 아닌 경우
apt[i][j] = sum(apt[i-1][:j+1]) #이전 행의 1~j호의 사람수의 합
print(apt[k][n]) #k층 n호의 사람수
다른 풀이 방법
from sys import stdin
t = int(stdin.readline())
cnt = 0
while cnt < t:
k = int(stdin.readline())
n = int(stdin.readline())
array = [t for t in range(1, n+1)]
for i in range(k):
for j in range(1, n):
array[j] += array[j-1]
print(array[-1])
cnt += 1
코드 실행 과정
... while cnt < t: ... array = [t for t in range(1, n+1)] print(array) for i in range(k): for j in range(1, n): array[j] += array[j-1] print(array) print(array[-1]) cnt += 1
프린트문으로 연산을 거칠 때마다 array가 어떻게 변하는지 콘솔창에 찍어보았다. 결과는 아래와 같다.
[1, 2, 3] 👉 array = [t for t in range(1, n+1)]
[1, 3, 3]
[1, 3, 6]
6 👉 print(array[-1])
[1, 2, 3] 👉 array = [t for t in range(1, n+1)]
[1, 3, 3]
[1, 3, 6]
[1, 4, 6]
[1, 4, 10]
10 👉 print(array[-1])
1차원 배열만으로 해결할 수 있는 문제였다...
반응형
'Problem Solving > 백준' 카테고리의 다른 글
[백준|파이썬] 25757: 임스와 함께하는 미니게임 (실버5) (0) | 2023.04.23 |
---|---|
[백준|파이썬] 2891: 카약과 강풍 (실버5) (0) | 2023.04.21 |
[백준|파이썬] 2563: 색종이 (실버5) (0) | 2023.04.19 |
[백준|파이썬] 5766: 할아버지는 유명해! (실버4) (0) | 2023.04.14 |
[백준|파이썬] 1388: 바닥 장식 (실버4) (0) | 2023.04.13 |
[백준|파이썬] 5014: 스타트링크 (실버1) (0) | 2023.04.12 |