본문 바로가기
백준

[백준] 1003번 : 피보나치 함수 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트

by 우당탕탕 개발자 2023. 7. 13.
728x90
반응형

 

 

1003번: 피보나치 함수

각 테스트 케이스마다 0이 출력되는 횟수와 1이 출력되는 횟수를 공백으로 구분해서 출력한다.

www.acmicpc.net

 

1. 문제 설명

2. 풀이과정

  1. sys.stdin.readline() 함수를 사용하기 위해 sys 모듈을 불러온다. import sys
  2. 테스트 케이스 횟수를 입력받는다. T = int(sys.stdin.readline())
  3. 테스트 케이스 횟수만큼 반복하며 for _ in range(T)
  4. 각 테스트 케이스 별로 피보나치 수를 입력받는다. num = int(sys.stdin.readline())
  5. 각 피보나치 수의 0의 개수와 1의 개수를 저장할 리스트를 생성하고 초기의 0과 1의 0의 개수와 1의 개수를 리스트로 묶어 저장한다. li = [[1, 0], [0, 1]]
  6. 이후 다음 수인 2부터 입력받은 피보나치 수까지 반복하며 for i in range(2, num + 1)
  7. 각 수의 0과 1의 개수를 추가한다. li.append([li[i - 2][0] + li[i - 1][0], li[i - 2][1] + li[i - 1][1]])
  8. 2부터 각 수의 0과 1이 출력되는 개수는 이전과 그 이전의 0과 1의 개수를 더한 결과이다.
  9. 입력받은 피보나치 수의 0과 1이 출력되는 개수를 출력한다. print(f"{d[num][0]} {d[num][1]}")
반응형

3. 소스코드

import sys

T = int(sys.stdin.readline())

for _ in range(T):
    num = int(sys.stdin.readline())

    li = [[1, 0], [0, 1]]

    for i in range(2, num + 1):
        li.append([li[i - 2][0] + li[i - 1][0], li[i - 2][1] + li[i - 1][1]])

    print(f"{li[num][0]} {li[num][1]}")
728x90
반응형