| gaelim |
음... 파이썬은 잘 모르는데요.
우선 파스칼의 삼각형이면 경우의 수 와 관련된 문제겠네요
일단
# Construct a 2D ragged list a of integers. The list must have n + 1 rows,
# with the ith (0 <= i <= n) row a[i] having i + 1 elements, each initialized
# to 1. For example, if n = 3, a should be initialized to
# [[1], [1, 1], [1, 1, 1], [1, 1, 1, 1]].
이 부분에서, 받은 n의 +1 만큼, 즉 n+1만큼 2D array를 생성하는데요 다 1로 초기화하라네요.
제가 파이썬에서 지원하는걸 잘몰라서요,
일단 이건 2중 for문을 써야할거같네요
for i=0 to i<=n
for j=0 to j<=i
a.push(1)
뭐 이렇게 하면
[[1], [1,1], [1,1,1], [1,1,1,1] ] 이렇게 나올거같구요
파스칼 삼각형이 실제로는
1
1 1
1 2 1
1 3 3 1
이렇게 생겼잖아요
근데 배열로 (파이썬에선 리스트?) 쓴다면
1
1 1
1 2 1
1 3 3 1
이런 모양이 되요 어쩃든 의도하는것처럼 만들려면
1
1 1
1 1* 1
1 1 1 1
여기서 각각 더해줘야하는데
1*을 기준으로보면 해당 i(row,행)는 2, j(column,열)는 1이에요
a[2][1] = a[1][0]+a[1][1] 이 되는거에요
근데 작성자분이 작성하신거 보니까
# Fill the ragged list a using the formula for Pascal's triangle
# a[i][j] = a[i - 1][j - 1] + a[i - 1][j]
# where 0 <= i <= n and 1 <= j < i.
for i in range(0, n):
for j in range(1, i):
a[i][j] = a[i - 1][j - 1] + a[i-1][j]
이렇게 되있는데요 주석에도 0<=i<=n, 1<=j<i 라고 힌트가 나와있는데
작서하신거보니까 for문에 경계점이 모호하네요 (0, n) (1, i) 라고 되있으니 뭔가 부등호 한개가 잘못된거겠죠? 이부분 반드시 수정하시구요
마지막 주석부분에는
# Write out the ragged list a, with elements separated by spaces, and each
# row ending in a newline.
라고 되어있는데요
출력하라는거겠죠
일단 출력하실때는요 이런식으로 하면되요 C처럼해볼게요
for (int i=0; i<=n; i++){
for (int j=i; j<n; j++){
printf(" ");
}
for (int j=0; j<=i; j++){
printf("%d ", a[i]); // "%d " <-- 여기 스페이스 한개있으니 주의하세요 ^^;;
}
printf("\n");
}
이렇게 하면 예쁘게 나오겠네요 ^^;; |
2017/10/15 |
|