본문 바로가기
프로그램 개발/Python

파스칼의 삼각형 구현(파이썬 이용)

by minchel1128 2022. 2. 23.

해당 코드는 파이썬 언어로 작성되었습니다. 해당 코드만 정답인 것은 아니며 더 나은 코드가 있을 수 있습니다.

 

파스칼의 삼각형은 다음과 같은 구성을 띄고 있습니다.

코드 부분

cycle = int(input()) # 반복 횟수 입력
numbers = [] # 출력 용 저장 리스트
temp = [] # 계산용 임시 리스트

for i in range(cycle): # 반복문
    numbers.append(1) # 첫부분 1 입력
    temp.append(1) # 계산용도 동일하게 적용
    if i < 2: 
        pass # 2가 넘어갈 될 때까지 무시
    else:
        for j in range(1, len(numbers)-1): # 계산
            temp[j] = numbers[j-1]+numbers[j]
    for j in range(len(numbers)): # 계산 완료된 코드를 다시 저장
        numbers[j]=temp[j]
        print(str(numbers[j]) + " ", end="") # 한줄로 출력
        
    print("") # 줄 띄우기

실행결과

코드 설명

  • cycle 변수에 정수 값을 입력하며 해당 정수 값은 반복 횟수를 의미합니다.
  • numbers 리스트에 출력할 리스트를 저장합니다.
  • temp 리스트에 임시로 계산용 값들을 저장합니다.
  • for문에 들어와서 numbers 리스트에 1 정수 값 입력
  • 반복 횟수가 2보다 작은 경우에는 그냥 출력하고 2가 넘어가면 계산 시작
  • 중첩 for문을 이용하여 2번째 위치(Python은 0번이 첫 번째)부터 기존 numbers에 저장된 앞 숫자와 현재 위치의 숫자를 더해서 temp 리스트에 저장하고 numbers 리스트의 크기의 -1번만큼 반복
  • 중첩 for문을 이용해서 numbers리스트에 temp리스트의 값을 입력
  • print함수로 출력하고 개행하지 않음
  • 출력이 마무리되면 개행함

주의할 점 : 여기서 만약 for문을 이용한 값 복사 방식이 아닌 numbers = temp와 같은 리스트에 등호를 사용하여 값을 입력하는 방식을 사용한다면 원하지 않는 결과가 나올 수가 있게 됩니다. Python에서의 리스트 등호 이용 복사의 경우에는 C언어의 행렬과 같이 방식으로 작동하게 되는데 그 말은 내용이 복사가 되는 것이 아닌 temp가 가리키는 값과 numbers가 가리키는 값을 일치시키게 돼서 temp에서 값을 변경시키면 numbers도 같이 바뀌게 되어 원하는 값이 나오지 않는 경우가 생기게 됩니다.

728x90
반응형