| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 | 29 |
| 30 |
Tags
- SSAFY
- SSAFYcial
- it 이슈
- 싸피셜
- python
- IT 동향
- 네트워크 관리사 2급
- KT
- 백준
- 우테코
- 신문스크랩
- 코테
- 코딩테스트
- 네트워크 관리사
- 백준위
- 네트워크 관리사 2급 실기
- java 객체지향 프로그래밍
- IT 트렌드
- 신문 스크랩
- it 뉴스
- 프로그래머스
- 카카오
- 구글
- 인앱결제
- SSAFY 7기
- html
- 코딩테스트 연습
- 싸피
- Java
- 리얼클래스
Archives
- Today
- Total
개발자일걸요..?
1904번 01타일 본문
728x90
반응형
문제링크 : www.acmicpc.net/problem/1904
1904번: 01타일
지원이에게 2진 수열을 가르쳐 주기 위해, 지원이 아버지는 그에게 타일들을 선물해주셨다. 그리고 이 각각의 타일들은 0 또는 1이 쓰여 있는 낱장의 타일들이다. 어느 날 짓궂은 동주가 지원이
www.acmicpc.net

<알고리즘>
00과 1로 만들 수 잇는 조합 결과를 생각하기 보단 그 조합의 갯수를 생각해야함
1) N이 0개인경우, 1개인경우, 2개인 경우를 미리 계산해 배열에 넣어둠
2) 그리고 N번째까지 배열의 값을 구하기
3) 배열의 N번째 값 출력
버전 1. 재귀함수 사용 (시간초과)
#include <iostream>
#include <vector>
using namespace std;
long long inttile(int n) {
if (n == 0) return 0;
else if (n == 1) return 1;
else if (n == 2) return 2;
else {
return tile(n - 1) + tile(n - 2);
}
}
int main() {
int N = 0;
cin >> N;
cout << tile(N)%15746 << "\n";
return 0;
}
버전 2. 피보나치 수열 방식 차용(시간 : 20460KB 메모리 : 16ms)
| N=0 | 0가지 | |
| N=1 | 1 | 1가지 |
| N=2 | 00, 11 | 2가지 |
| N=3 | 001, 100, 111 | 3가지 |
| N=4 | 0000, 0011, 1100, 1111 | 4가지 |
| N=5 | 00001, 10000, 11100, 11001, 10011, 00111, 11111 |
7가지 |
#include <iostream>
#include <vector>
using namespace std;
vector<long long int> dt = { 0,1,2 };
void tile(int n) {
for (int i = 3; i <= n; i++) {
dt.push_back((dt[i - 1] + dt[i - 2]) % 15746);
}
}
int main() {
int N = 0;
cin >> N;
tile(N);
cout << dt[N]%15746 << "\n";
return 0;
}반응형
'알고리즘코딩 > Baekjoon Online Judge' 카테고리의 다른 글
| 11279번 최대 힙 (0) | 2021.03.05 |
|---|---|
| 9461번 파도반 수열 (0) | 2021.03.04 |
| 9184번 신나는 함수 실행 (0) | 2021.03.03 |
| 1629번 곱셈 (0) | 2021.03.02 |
| 1780번 종이의 개수 (0) | 2021.03.01 |
Comments