반응형
SW Expert Academy 2005: 파스칼의 삼각형
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
- 문제
입력으로 N이 주어지면 N개의 줄을 가진 파스칼의 삼각형을 출력해야 한다.
- 풀이
T = int(input())
N = int(input())
for t in range(T):
print("#{}".format(t+1))
answer = [] # 정답을 담아야 함
for i in range(N):
temp = [] # 파스칼의 한 줄
for j in range(i+1):
if j == 0 or j == i: # 한 줄에서 첫번째 혹은 마지막은 무조건 1
temp.append(1)
else:
temp.append(answer[i-1][j] + answer[i-1][j-1]) # i-1, 즉 이전 줄의 두개를 합친게 이번 줄의 숫자가 됨
answer.append(temp)
for i in answer:
print(*i) # asterisk를 사용하는 방법 중 하나로 리스트 안의 내용만 빼다 쓸 수 있다.
재귀함수를 이용하는 방법도 있는데, 재귀함수를 이용할 시에 시간이 너무 많이 소요되므로 반복문을 이용해서 풀어봤다. answer라고 정답을 저장할 리스트를 만들고 한 줄마다 내용을 저장해서 answer에 append해주는 방식으로 진행한다. 한 줄에서 첫 번째 숫자와 마지막 숫자는 언제나 1이므로 if j == 0 or j == i를 넣어주고, 이러한 경우를 제외하고는 언제나 이전 줄의 2개의 합이 현재 숫자가 되므로 그 부분을 넣어준다.
print(*i) : *(asterisk)을 이렇게 사용할 수 있는줄 몰랐다.
for i in answer:
print(i)를 하면
[1]
[1, 1]
[1, 2, 1]
이런 방식으로 나오는데, asterisk를 사용해서
for i in answer:
print(*i)를 하면ㅁ
1
1 1
1 2 1
와 같은식으로 출력된다.
- 기억할 것!
- asterisk를 사용하는 방법으로는 4가지가 있다.
- 리스트를 append해서 사용하고 i-1이랑 j-1에 접근하는 만큼 리스트의 크기를 벗어난 부분을 인덱싱하지 않도록 조심해야 한다.
반응형
'Algorithm > SW Expert Academy' 카테고리의 다른 글
SWEA 1227 : 미로2(S/W 문제해결 기본)[파이썬] (0) | 2022.05.31 |
---|---|
SWEA 1226 : 미로1(S/W 문제해결 기본)[파이썬] (0) | 2022.05.28 |
SWEA 2063 : 중간값 찾기(D1)[파이썬] (0) | 2022.05.25 |
SWEA 1926 : 간단한 369게임(D2)[파이썬] (0) | 2022.05.13 |
SWEA 2071 : 평균값 구하기(모의 SW D1)[파이썬] (0) | 2022.05.10 |