SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
📌 작성한 코드
T = int(input())
for x in range(1, T + 1):
n = int(input())
arr = [[0 for j in range(n)] for i in range(n)]
arr[0][0] = 1
for i in range(1,n):
for j in range(n):
sum= arr[i-1][j]
if j-1 >= 0:
sum += arr[i-1][j-1]
arr[i][j] = sum
print(f'#{x}')
for i in range(n):
for j in range(n):
if arr[i][j] > 0:
print(arr[i][j], end=" ")
print()
📌 풀이
1. 0으로 초기화된 n*n 배열 생성
n = int(input())
arr = [[0 for j in range(n)] for i in range(n)]
2. 파스칼의 삼각형 채우기
왼쪽 위와 오른쪽 위의 수를 더한 수가 자신의 수가 되는 형태의 삼각형인데,
배열에서 왼쪽 위 -> 바로 위의 오른쪽 -> [i-1][j-1], 오른쪽 위 -> 바로 위 -> [i-1][j]
j의 인덱스가 0인 경우에는 왼쪽 위 숫자가 없기 때문에, if문을 통해 왼쪽 위의 숫자가 있을 때만 더해지도록 한다.
arr[0][0] = 1
for i in range(1,n):
for j in range(n):
sum= arr[i-1][j]
if j-1 >= 0:
sum += arr[i-1][j-1]
arr[i][j] = sum
3. 출력하기
요소가 0인 부분은 출력하지 않아도 되니까 0보다 큰 경우에만 출력해준다
같은 줄에 출력하기 위해 end=" "를 사용하고 한 줄이 다 출력된 이후에는 줄 바꿈을 위해 print()를 한 번 해준다.
print(f'#{x}')
for i in range(n):
for j in range(n):
if arr[i][j] > 0:
print(arr[i][j], end=" ")
print()

'알고리즘 > SWEA' 카테고리의 다른 글
| [Python] SWEA D2 : 1989 - 초심자의 회문 검사 (0) | 2023.10.29 |
|---|---|
| [Python] SWEA D2 : 2001 - 파리퇴치 (0) | 2023.10.29 |
| [Python] SWEA D2 : 2007 - 패턴 마디의 길이 (1) | 2023.10.28 |
| [Python] SWEA D2 : 1926 - 간단한 369게임 (0) | 2023.10.28 |
| [Python] SWEA D2 : 1288 - 새로운 불면증 치료법 (0) | 2023.10.27 |