티스토리 뷰
# 정답 풀이
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
def tile(n):
result = 0
temp1 = 1
temp2 = 2
for i in range(1, n + 1):
if i == 1:
result = temp1
elif i == 2:
result = temp2
else:
result = temp1 + temp2
temp1 = temp2 % 15746
temp2 = result % 15746
return result % 15746
num = int(input())
print(tile(num))
|
cs |
N을 1부터 차례대로 구해보면 피보나치와 같은 점화식이 나오는 것을 확인할 수 있다. 이 때 N이 커질 경우 결과값이 정수범위를 초과하는데 이를 방지하기 위해 15746으로 구한 나머지를 저장한다. 나머지를 미리 구한 뒤 계산을 해도 결과값에는 차이가 없다.
# 번외 풀이 (시간 초과)
1
2
3
4
5
6
7
8
9
10
11
|
from math import factorial
num = int(input())
result = 0
for i in range(num//2 + 1):
zero_cnt = i
one_cnt = num-(2*i)
result += factorial(num-i) // (factorial(i) * factorial(num-2*i))
print(result%15746)
|
cs |
위의 코드는 시간 초과로 틀린 코드이지만 N의 값이 크지 않다면 같은 결과를 보여준다. 정답 코드가 점화식을 이용한 코드 였다면 번외 코드는 조합을 이용한 코드이다. 선택되는 0과 1의 개수를 조합하여 같은 결과를 얻을 수 있다.
'알고리즘 문제 > 백준 - 파이썬' 카테고리의 다른 글
백준 1149번_RGB 거리 [ python/파이썬] (0) | 2020.08.01 |
---|---|
백준 9461번_파도반 수열 [python/파이썬] (0) | 2020.08.01 |
백준 1003번_피보나치 함수 [python/파이썬] (0) | 2020.07.31 |
백준 2748번_피보나치 수 2 [python/파이썬] (0) | 2020.07.31 |
백준 14889번_스타트와 링크 [python/파이썬] (0) | 2020.07.27 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 해쉬 라우터
- 인사이트
- 1463
- props를 변경하지 않는 이유
- props를 변경하지 못하는 이유
- Python
- 리액트 jsx
- 댓글 모듈
- 리액트 동작원리
- 리액트 리스트 key
- 프론트엔드
- 파이썬
- 리액트 리스트 키
- React key
- localhost https
- 리액트 props
- 백준
- Redux Thunk
- 리덕스 썽크
- 우테코
- 브라우저 라우터
- 리액트 리덕스
- Hash Router
- 프론트
- 우아한테크코스
- Browser Router
- mkcert
- 리액트 키
- 다라쓰
- contentEditable focus
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
글 보관함