728x90
문제 링크: https://www.acmicpc.net/problem/1003
1003번: 피보나치 함수
각 테스트 케이스마다 0이 출력되는 횟수와 1이 출력되는 횟수를 공백으로 구분해서 출력한다.
www.acmicpc.net
!!- 추천 -!! 문제를 읽고 먼저 종이에 써서 규칙찾기!
❌ 1차시도 실패
결과는 메모리 초과....... def 이용해서 하기 귀찮쓰해서 그냥 기본을 가지고 써내려갔는데, 메모리 초과가 떴다..
나름 0.25초 인것을 캐치해서 input( )과 print( )를 뻈건만.... 메모리를 생각 못함
그래도......... def 를 사용하기 싫어서 다른 방법을 생각해보았다..
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
# 시간제한 0.25초
# 첫째줄 테스트 개수 t
# 둘째줄 0 출력 횟수, 1 출력 횟수
import sys
t= int(sys.stdin.readline())
fibo=[[0],[1]]
for i in range(2,41):
fibo.append(fibo[i-1]+fibo[i-2])
for _ in range(t):
num=int(sys.stdin.readline())
# fibo[num] 속에 0과 1카운트
sys.stdout.write(fibo[num].count(0))
sys.stdout.write(fibo[num].count(1))
|
cs |
❓ 정답은 ??
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
# 2차시도(성공)------------------------
import sys
t=int(sys.stdin.readline()) #테스트 개수
for _ in range(t): #테스트 개수 만큼 반복
n=int(sys.stdin.readline()) #테스트 입력받고
# 맨 처음 0 기준으로
zero = 1
one = 0
for _ in range(n):
# 다음 수 zero는 현재one값
# 다음 수 one은 현재zero+현재one값
one_clone = one
one = zero + one
# one은 현재 바뀐상태이기에 zero = one 식을 바로 쓰면 안됨.
# 미리 clone을 만들어야함 (33번줄에 추가)
# 다음zero 계산을 나중에 쓴 이유는,
# 다음one 계산 시 바뀐 zero로 들어가면 안되니까
zero = one_clone
print(zero, one)
|
cs |
💯 풀이 과정
일단 0일때 zero와 one의 개수를 종이에 써봤다
# 다음 수 zero는 현재one값
# 다음 수 one은 현재zero+현재one값
zero와 one 2가지를 찾다보니 one이 중간에 바뀌어 버려서 clone을 만들어야 하는 수고스러움이 있었긴 했지만
그래도 def 안쓰고 문제 잘 해결함
😎오늘의 한줄평: 아직은 def 와 친하질 않아여... 😓
728x90
'😁 빅데이터 문제 풀기 & Study > - BAEKJOON 문제' 카테고리의 다른 글
[1181번] 단어 정렬 / python3 (2차원 리스트 활용하기) (0) | 2021.11.09 |
---|---|
[1316번] 그룹 단어 체커 / python3 (feat. 다시 도전) (0) | 2021.11.09 |
[10757번] 큰 수 A+B /python3 (이제는 easy해져 부려따) (0) | 2021.11.09 |
[2750번] 수 정렬하기 / python3 (feat. 어려운 문제 이후는) (0) | 2021.11.09 |
[2667번] 단지번호 붙이기 / python3 (DFS의 향연, 추후 BFS 업로드예정) (0) | 2021.11.09 |