-
백준 2210 숫자판 점프 | DFS | C++[백준 알고리즘]/[C++] 2021. 3. 12. 10:14728x90반응형
이번 포스팅은 백준 2210번 숫자판 점프입니다.
아래 url를 클릭하시면 백준 사이트에서 문제를 볼 수 있습니다.
2210번: 숫자판 점프
111111, 111112, 111121, 111211, 111212, 112111, 112121, 121111, 121112, 121211, 121212, 211111, 211121, 212111, 212121 이 가능한 경우들이다.
www.acmicpc.net
기본 알고리즘
DFS (깊이 우선 탐색)
참고
line 46-47 벡터의 중복 원소 제거
C++ vector 중복 원소 삭제
1. unique 함수 unique 함수는 vector에서 중복되지 않는 원소들을 앞에서부터 채워나가는 함수 (algorithm 헤더에 정의) 자신이 바꾼 vector의 end()를 반환 (중복 원소들(쓰레기 값들)의 첫 번째 위치 리턴)
scarlettb.tistory.com
전체 코드
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051//백준2210 숫자판점프#include <iostream>#include <vector>#include <algorithm>using namespace std;int map[5][5];int dy[] = { 0,0,-1,1 };int dx[] = { -1,1,0,0 };vector<int> v;void DFS(int y, int x, int num, int cnt) {if (cnt == 6) {v.push_back(num);return;}for (int i = 0; i < 4; i++) {int ny = y + dy[i];int nx = x + dx[i];if (ny < 0 || nx < 0 || ny >= 5 || nx >= 5)continue;DFS(ny, nx, num * 10 + map[ny][nx], cnt+1);}}int main() {/*입력*/for (int i = 0; i < 5; i++) {for (int j = 0; j < 5; j++) {cin >> map[i][j];}}/*모든 좌표의 DFS 경로 탐색*/for (int i = 0; i < 5; i++) {for (int j = 0; j < 5; j++) {DFS(i, j, 0, 0);}}/*벡터의 중복 원소 제거*/sort(v.begin(), v.end());v.erase(unique(v.begin(), v.end()), v.end());/*정답 출력*/cout << v.size();}cs 728x90반응형'[백준 알고리즘] > [C++]' 카테고리의 다른 글
백준 1377 버블 소트 | C++ (0) 2021.03.15 백준 11478 서로 다른 부분 문자열의 개수 | C++ (0) 2021.03.15 백준 1620 나는야 포켓몬 마스터 이다솜 | C++ (0) 2021.03.11 백준 2583 영역 구하기 | BFS | C++ (0) 2021.03.11 1987번 알파벳 | DFS | 백준 5014 C++ 코드 (0) 2021.03.09