https://www.acmicpc.net/problem/16395
ans[i][j] = ans[i-1][j-1] + ans[i-1][j]
(입력 및 선언)
(반복문)
(최종 출력)
처음에 문제를 보고 푼 코드이다.
n, k = map(int, input().split())
ans = [[1 for _ in range(i)] for i in range(1, 31)]
for i in range(1, n):
for j in range(i):
if j == 0 or j == i:
ans[i][j] = 1
else:
ans[i][j] = ans[i-1][j-1] + ans[i-1][j]
print(ans[n-1][k-1])
이 코드의 수행 시간이 아래 코드(44ms)보다 4ms 정도 더 빠르긴 했지만, 가독성 측면에서 아래 코드가 더 좋은 것 같다. 다른 코드를 참고해 수정해보았다.
n, k = map(int, input().split())
ans = [[1 for _ in range(i)] for i in range(1, 31)]
for i in range(2, 30):
for j in range(1, i):
ans[i][j] = ans[i-1][j-1] + ans[i-1][j]
print(ans[n-1][k-1])
이미 1로 리스트를 초기화했기 때문에 굳이 처음과 끝 인덱스를 신경 쓸 필요가 없다.