목록Algorithm/BFS&DFS (22)
DOTY
2468번: 안전 영역 (acmicpc.net) 2468번: 안전 영역 재난방재청에서는 많은 비가 내리는 장마철에 대비해서 다음과 같은 일을 계획하고 있다. 먼저 어떤 지역의 높이 정보를 파악한다. 그 다음에 그 지역에 많은 비가 내렸을 때 물에 잠기지 않는 www.acmicpc.net 괜히 넘겨짚어서 이런이런... #include using namespace std; int pos_x[4] = {0, 1, 0, -1}; int pos_y[4] = {1, 0, -1, 0}; int building[100][100]; int check[100][100]; void dfs(int x, int y, int rain, int N) { check[x][y] = 1; for(int i = 0; i < 4; i++)..
코딩테스트 연습 - 게임 맵 최단거리 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr BFS로 풀었다. 잔실수가 너무 많았었던 문제 #include using namespace std; int pos_x[4] = {0, 1, 0, -1}; int pos_y[4] = {1, 0, -1, 0}; int check[101][101] = {0,}; int solution(vector maps) { int n = maps.size(); int m = maps[0].size(); int answer = 0; i..
1012번: 유기농 배추 (acmicpc.net) 1012번: 유기농 배추 차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 www.acmicpc.net 초기화 하는 방법을 헷갈려서 헤맨 문제 #include using namespace std; int dx[] = {1, 0, -1, 0}; int dy[] = {0, 1, 0, -1}; int check[51][51]; int cab[51][51]; void cabbage(int x, int y) { int pos_x = x; int pos_y = y; queue position; position.push(make_pair(..
programmers.co.kr/learn/courses/30/lessons/43163 코딩테스트 연습 - 단어 변환 두 개의 단어 begin, target과 단어의 집합 words가 있습니다. 아래와 같은 규칙을 이용하여 begin에서 target으로 변환하는 가장 짧은 변환 과정을 찾으려고 합니다. 1. 한 번에 한 개의 알파벳만 바꿀 수 programmers.co.kr BFS, DFS 모두 가능한 문제. 하지만 나는 BFS가 더 좋아서 BFS했음 ㅎㅎㅎㅎㅎㅎ #include #include #include using namespace std; int solution(string begin, string target, vector words) { int answer = 0; int flag = 0; ..
programmers.co.kr/learn/courses/30/lessons/43162 코딩테스트 연습 - 네트워크 네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있�� programmers.co.kr 까다로워 보이지만 자료 정리만 잘 해놓으면 기본적인 DFS와 다를게 없다. #include #include using namespace std; bool check[200] = {0, }; vector link[200]; void dfs(int x) { check[x] = 1; for(int i = 0; i < link[x].size(); i++) { int y = ..
programmers.co.kr/learn/courses/30/lessons/43165?language=cpp 코딩테스트 연습 - 타겟 넘버 n개의 음이 아닌 정수가 있습니다. 이 수를 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+ programmers.co.kr 한두 달 전에 시도했다가 포기했던 문제... 설욕전 대성공 ㅎㅎㅎㅎㅎㅎㅎㅎ #include #include using namespace std; int s = 0; int answer = 0; void dfs(int cnt, vector numbers, int target) { if(cnt == nu..

www.acmicpc.net/problem/1987 1987번: 알파벳 세로 R칸, 가로 C칸으로 된 표 모양의 보드가 있다. 보드의 각 칸에는 대문자 알파벳이 하나씩 적혀 있고, 좌측 상단 칸 (1행 1열) 에는 말이 놓여 있다. 말은 상하좌우로 인접한 네 칸 중의 한 칸으 www.acmicpc.net 다 풀었다.... 는 통수 딱!!!!! (85% 에서 헤맸다....ㅠㅠㅠ) #include #include using namespace std; vector road; int R, C; int answer = 1; char map[21][21]; bool check[21][21] = {0, }; int dx[] = {1, 0, -1, 0}; int dy[] = {0, 1, 0, -1}; void dfs(..
www.acmicpc.net/problem/14502 14502번: 연구소 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크� www.acmicpc.net 솔직히 감이 처음에는 안 잡혔지만 결론은 노가다 였다. #include #include #include #include #include using namespace std; queue q; vector v; int map[8][8] = {0, }; int cpy_map[8][8]; int dx[] = {1, 0, -1, 0}; int dy[] = {0, 1, 0, -1}; bool check[8][8] = {0, }; i..
https://www.acmicpc.net/problem/11724 11724번: 연결 요소의 개수 첫째 줄에 정점의 개수 N과 간선의 개수 M이 주어진다. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) 둘째 줄부터 M개의 줄에 간선의 양 끝점 u와 v가 주어진다. (1 ≤ u, v ≤ N, u ≠ v) 같은 간선은 한 번만 주�� www.acmicpc.net DFS를 연습하고 싶으면 이 문제를 추천한다. 가장 기본적인 DFS 인 듯 싶다. #include #include using namespace std; vector arr[1001]; bool check[1001] = {0, }; int N, M; void dfs(int x) { if(check[x] == 1) { return; }..

https://www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토� www.acmicpc.net 흠.... BFS는 좋아.... #include #include using namespace std; queue q; int N, M; int dx[] = {1, 0, -1, 0}; int dy[] = {0, 1, 0, -1}; int tomato[1000][1000] = {0, }; bool check [1000][1000] = {0, }; int bfs() { int cnt ..