목록BFS (89)
어흥
문제 링크: https://swexpertacademy.com/main/code/userProblem/userProblemDetail.do?contestProbId=AWSHOpR6f_sDFARw SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 1. 주의할 점 - 매 TC마다 Check[][][]를 초기화해준다 - M의 주기마다 생성되는 오작교는 최대 1번만 만든다 - 크기가 2 이상인 배열은 위의 오작교와 별도로 작성한다 2. 구현 - BFS를 통해 구현한다 - Check[][][]: Y,X,주기가 M인 오작교를 만든 경우: 1, 안만든 경우: 0 - 구조체(Y,X 좌표값, State: 방금전에 오작교를 지났다..
문제 링크: https://www.acmicpc.net/problem/2468 2468번: 안전 영역 재난방재청에서는 많은 비가 내리는 장마철에 대비해서 다음과 같은 일을 계획하고 있다. 먼저 어떤 지역의 높이 정보를 파악한다. 그 다음에 그 지역에 많은 비가 내렸을 때 물에 잠기지 않는 � www.acmicpc.net 1. 주의할 점 - 높이를 1~100까지 모두 시험해보지 말고 가장 낮은 건물높이~가장 높은 건물 높이로 시험한다 2. 구현 - 가장 낮은 건물높이, 가장 높은 건물 높이를 구해서 For문을 반복한다 - 높이 설정을 다르게 할 때 마다 Check[][]배열을 초기화 해준다 - BFS를 통해 잠기는 높이보다 건물이 높으면 Queue에 넣는 방식으로 하며 Cnt를 Result와 비교하며 Re..
문제 링크: https://www.acmicpc.net/problem/3108 3108번: 로고 문제 로고는 주로 교육용에 쓰이는 프로그래밍 언어이다. 로고의 가장 큰 특징은 거북이 로봇인데, 사용자는 이 거북이 로봇을 움직이는 명령을 입력해 화면에 도형을 그릴 수 있다. 거북이는 �� www.acmicpc.net 1. 주의할 점 - 문제를 DFS+BFS를 이용하여 푸는 방법도 있지만, 제가 푼 방법은 범위를 비교하고 만약 서로 겹치는 점이 있다면 부모를 같게 하는 Disjoint-set 방법으로 해결했다 - 초기 상태 (0,0)에서 고개를 내리고 있으므로, (0,0)에 대한 정보를 포함시키고 시작해야한다. 1.5 범위 비교 - 범위 비교할때 다음과 같은 6가지의 경우만 겹치지 않는다고 판단했다 2. 구..
문제 링크: https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWJHmLraeEwDFAUH# SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 1. 주의할 점 (모두 중요) - 이 문제는 구현보다는 배열을 어떻게 설정할 것인지 생각하는게 중요! - Arr[][],Numx[],Numy[]를 직접 만들어서 시행했는데, TC를 입력받기 전에 미리 1번 Make_arr()함수를 실행하여 생성해 놓는다 - 6각형 모양이라고 생각하고 (y,x)를 기준으로 6방향인 (y-1,x+1), (y,x+2), (y+1,x+1), (y+1,x-1)..
문제 링크: https://www.acmicpc.net/problem/1400 1400번: 화물차 문제 화물차가 출발지 창고에서 짐을 싣고 배송지 창고까지 짐을 운반하려고 한다. 이 도시의 도로망을 나타낸 지도의 예는 다음과 같다. #A##0##1# .#..#..#. .#..#..#. .###2#.B. 도로망에서 차들은 동, 서, 남, 북의 방향으로만 이동할 수 있고, 지도의 각 문자는 다음과 같은 의미를 가진다. 'A'는 출발지 창고를 나타내고, 지도에서 유일하다. 'B'는 배송지 창고를 나타내고, 지도에서 유일하다. '.'은 차가 들어갈 수 없는 www.acmicpc.net 1. 주의할 점 - 교차로에 들어간 차량은 언제든지 임의의 방향으로 나갈 수 있다. - 교차로의 모양을 초 단위로 바꾼다 - 모..
문제 링크: https://www.acmicpc.net/problem/8452 8452번: 그래프와 쿼리 문제 방향성 있는 그래프 G가 주어진다. 모든 간선의 길이는 1일 때, 당신은 두 가지 쿼리를 처리해야 한다. 간선 하나를 제거한다. 정점 1에서 정점 i 까지의 최단 경로를 출력한다. 경로가 없으면 -1을 출력한다. 입력 첫 번째 줄에 그래프의 정점, 간선의 수와 질의의 수를 나타내는 n, m, q 가 주어진다. (1 ≤ n ≤ 1, 000, 1 ≤ m ≤ 100, 000, 1 ≤ q ≤ 200, 000) 정점들은 순서대로 1부터 n까지 번호가 매겨져 www.acmicpc.net 1. 주의할 점 - 오프라인 쿼리의 원리를 활용한다(간선을 끊는게 아닌 쿼리의 역으로 실행하여 간선을 추가하는 방향으로)..
문제 링크: https://www.acmicpc.net/problem/16234 16234번: 인구 이동 N×N크기의 땅이 있고, 땅은 1×1개의 칸으로 나누어져 있다. 각각의 땅에는 나라가 하나씩 존재하며, r행 c열에 있는 나라에는 A[r][c]명이 살고 있다. 인접한 나라 사이에는 국경선이 존재한다. 모든 나라는 1×1 크기이기 때문에, 모든 국경선은 정사각형 형태이다. 오늘부터 인구 이동이 시작되는 날이다. 인구 이동은 다음과 같이 진행되고, 더 이상 아래 방법에 의해 인구 이동이 없을 때까지 지속된다. 국경선을 공유하는 두 나라의 인구 차이가 L명 www.acmicpc.net 1. 주의할 점 - 언제 While문을 끝내야 하는지 알아야 한다 - 연합되는 국가를 어떻게 확인할지 알아야 한다 2. ..
문제 링크: https://www.acmicpc.net/problem/1963 = 1000) prime.push_back(i); } } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cal(); int num, start, dest; cin >> num; for (int i = 0; i > start >> dest; for (int j = 1000; j < 10000; j++) visit[j] = false; for (int j = 0; j < prime.size(); j++) visit[prime[j]] = true; queue q; visit[start] = false; in..