250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 추억
- #DB#SQLD#자격증
- JAVA #언어 #프로그래밍 #IT #개발 #코딩
- 준비
- 인프라
- 메시지 큐
- IT
- 영국
- ip
- JAVA #언어 #프로그래밍 #코딩 #static #정적함수 #정적변수 #클래스
- 실비용
- 이탈리아
- JAVA #객체지향 #프로그래밍 #언어 #IT #기초
- 일정
- 계획
- 겨울
- RabbitMQ
- 배낭여행
- 서버
- 유럽여행
- 경험
- 여행 #
- 1달살기
- 파이썬
- 유럽
- 내심정
- 샐러리
- 여행
- 리눅스
- 예약
Archives
- Today
- Total
YoonWould!!
[백트래킹]2661번 좋은수열 본문
728x90
URL : https://www.acmicpc.net/problem/2661
백트래킹 문제 어떻게 풀지?
1. 1,2,3 을 더해가며 좋은 수열인지 아닌지 판별한다고 했을 때 - dfs와 백트래킹 문제 직감
2. 종료 조건 - 좋은 순열 찾았을 때, 나쁜 순열일 경우, 길이가 n일 경우 출력
참고
c++에서 s.substr(a, b) 는 s문자열을 시작점 a에서부터 b개의 문자를 자르는 것
※필요 역량 정리하기!!!※
1. dfs + 백트래킹
2. #include<string>에서 사용하는 함수 정리하기
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | /* 2661 좋은 수열 백트래킹 문제 */ #include<iostream> #include<algorithm> #include<string> using namespace std; int n; bool finish; bool check(string s) { int len = s.length(); int start = len - 1; for (int i = 1; i <= len / 2; i++) { string first = s.substr(start - i, i); string second = s.substr(start, i); if (first.compare(second) == 0) return false; start--; } return true; } void dfs(int len ,string s) { if (finish) return; if (!check(s)) return; if (len == n) { finish = true; cout << s << endl; return; } dfs(len + 1, s + "1"); dfs(len + 1, s + "2"); dfs(len + 1, s + "3"); } int main() { cin >> n; dfs(1,"1"); return 0; } | cs |
728x90
'<SW> > 알고리즘 + 자료구조' 카테고리의 다른 글
[삼성SWTest준비]14888번 연산자 끼워넣기 (0) | 2018.09.29 |
---|---|
[백트래킹]2583번 영역 구하기 (0) | 2018.09.28 |
[삼성SWTest준비]14889번 스타트와 링크 (0) | 2018.09.26 |
[삼성SWTest준비]14502번 연구소 (0) | 2018.09.22 |
[BFS] 7576번 토마토 (0) | 2018.08.14 |