일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 파이썬 강좌
- 프로그래밍
- 강의
- dp
- 2020
- C++
- 자작시
- 라즈베리파이 모니터
- 자살
- 백준
- 알고리즘
- mmcv
- 2021
- 강좌
- python
- 슬픔
- 고통
- it
- python 강의
- python 강좌
- BOJ
- 파이썬
- 파이썬 강의
- 공부
- mmdetection
- 계획
- dynamic programming
- 2024
- 철학
- 인생
- Today
- Total
목록
백트래킹
(2)
반응형
Stargazer
접근: 사실상 구현을 잘하는지 묻는 문제.(덕분에 복붙의 향연을 볼 수 있었다..) 크기가 20x20 미만이므로 dfs(백트래킹)를 이용해서 풀어도 무방하다. 전략: 구현 부분은 대략적으로만 설명하면, 모듈화를 위해서 판에 있는 줄들을 한 줄씩 가져와서, 줄을 이동하는 좌우로 이동 가능한 함수를 만든다. 각 줄에 대해 이동을 한 후에 다시 복사하여 다음 count 에 해당하는 map 변수로 저장하여 다음 함수로 넘어간다. (이렇게 따로 저장해 놓으면 따로 백트래킹 처리를 하지 않아도 된다) 그 외 5번 내로 가장 최대로 구할 수 있는 수를 구해야 하므로 DFS를 이용하여, 시뮬레이션을 진행한다. 그 후에 가장 큰 수를 map을 스캔 해서 가장 큰 것을 취하여 반환한다. 코드: #include #inclu..
접근: 스도쿠 자체로 크기가 9x9로 정해 있기 때문에, 백 트래킹 이 가능한 크기다. 따라서 백트래킹으로 하나씩 전부 조사하되 사전식으로 조사하면 된다. 전략: 앞에서 부터 하나씩 입력 받을 때, 0의 위치와 갯수를 입력받아서 백트래킹으로 각 점을 대입하면서 답을 찾아본다. 코드: #include #include using namespace std; int map[9][9]; int cnt = 0; bool flag = false; vector vac; bool visit[81] ={false,}; void print(){ for(int i=0;i