백준
[백준] 1003번 : 피보나치 함수 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트
우당탕탕 개발자
2023. 7. 13. 16:38
728x90
반응형
1003번: 피보나치 함수
각 테스트 케이스마다 0이 출력되는 횟수와 1이 출력되는 횟수를 공백으로 구분해서 출력한다.
www.acmicpc.net
1. 문제 설명
2. 풀이과정
- sys.stdin.readline() 함수를 사용하기 위해 sys 모듈을 불러온다. import sys
- 테스트 케이스 횟수를 입력받는다. T = int(sys.stdin.readline())
- 테스트 케이스 횟수만큼 반복하며 for _ in range(T)
- 각 테스트 케이스 별로 피보나치 수를 입력받는다. num = int(sys.stdin.readline())
- 각 피보나치 수의 0의 개수와 1의 개수를 저장할 리스트를 생성하고 초기의 0과 1의 0의 개수와 1의 개수를 리스트로 묶어 저장한다. li = [[1, 0], [0, 1]]
- 이후 다음 수인 2부터 입력받은 피보나치 수까지 반복하며 for i in range(2, num + 1)
- 각 수의 0과 1의 개수를 추가한다. li.append([li[i - 2][0] + li[i - 1][0], li[i - 2][1] + li[i - 1][1]])
- 2부터 각 수의 0과 1이 출력되는 개수는 이전과 그 이전의 0과 1의 개수를 더한 결과이다.
- 입력받은 피보나치 수의 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
반응형