목록전체 글 (264)
Deff_Dev
문제 w * h 크기의 건물에 불이 났을 때, 상근이가 얼마나 빨리 탈출할 수 있는지 출력하는 문제이다. 입력'.': 빈 공간'#': 벽'@': 상근이의 시작 위치'*': 불풀이입력을 받을 때, 상근이의 시작위치, 불 위치는 각각의 큐에 저장하고, 탈출 지점 좌표를 벡터에 저장한다. 이후, 각각의 큐를 바탕으로 BFS를 진행하고, 각각의 map 정보를 저장한다. 탈출 지점 좌표를 탐색하여, 불 위치를 BFS한 맵, 상근이 위치를 BFS한 맵의 값을 비교하고 상근이 위치를 BFS한 맵의 탈출 지점 값이 더 작다면 최솟값을 비교한다. #include using namespace std;int dx[4] = {0, 0, 1, -1};int dy[4] = {1, -1, 0, 0};int n, h, w;vecto..
문제M * N * H로 이루어진 박스에 토마토들이 담겨 있는데, 익은 토마토가 되기 위해서는 안 익은 토마토 근처에 익은 토마토가 있을 때, 하루가 지나면 익은 토마토가 된다. 박스에 모든 토마토가 익은 토마토가 될려면 며칠이 지나야하는지 출력하는 문제이다. 입력 조건은 -1(토마토가 없는 박스), 0(안익은 토마토), 1(익은 토마토)이다.풀이3차원 배열에 박스 정보를 입력받고, 익은 토마토 좌표를 큐에 저장한 뒤, BFS를 이용하여 날짜를 계산했다. 큐가 비었을 때 BFS가 끝나므로 출력할 땐, count - 1를 한다.#include using namespace std;int dx[6] = {0, 0, 1, -1,0,0 };int dz[6] = {1, -1, 0, 0,0,0};int dy[6] = ..
문제 n * n 크기의 R, G, B로이루어진 그림의 구역 수를 구하는 문제이다. 이때, 적록색약 유무에 따른 그림 영역의 갯수를 출력하면 된다. 적록 색약이 있는 사람은 R, G의 구분을 못한다.ex) 적록 색약 X ▶ R (1), G(1), B(1) = 3개, 적록 색약 O ▶ RG(1), B(1) = 2개풀이일반적인 그림이 담겨있는 2차원 벡터와 적록색약을 가진 사람이 보는 그림이 담긴 2차원 벡터 2개를 만들고, 이를 BFS를 이용하여 탐색했다. #include using namespace std;int dx[4] = {0, 0, 1, -1};int dy[4] = {1, -1, 0, 0};int n ;void BFS(pair startPoint,vector> &arr,bool visited[1..
문제풀이간단한 BFS 문제로, BFS이용하여 그림 영역과 넓이를 구한 뒤, 출력했다.#include using namespace std;int n, m, pictureCount = 0 ,maxWidth = 0;int arr[500][500] = {0 ,};int dx[4] = {-1, 0, 1, 0};int dy[4] = {0, 1, 0, -1};bool visited[500][500] = {false, };void BFS(pair startPoint){ queue> q; q.push(startPoint); visited[startPoint.first][startPoint.second] = true; int count = 1; while (!q.empty()) { pair point = q.front(..
문제 이 문제는 아래의 규칙에 따라 ( , ) , [ , ] 로 이루어진 입력의 결과 값을 출력하는 문제이다. 규칙'()’ 인 괄호열의 값은 2이다.‘[]’ 인 괄호열의 값은 3이다.‘(X)’ 의 괄호값은 2×값(X) 으로 계산된다.‘[X]’ 의 괄호값은 3×값(X) 으로 계산된다.올바른 괄호열 X와 Y가 결합된 XY의 괄호값은 값(XY)= 값(X)+값(Y) 로 계산된다.이때, 올바르지 않은 괄호열일 경우 반드시 0을 출력한다.풀이이 문제를 실제 수식 연산처럼 풀이하기엔 괄호가 겹쳐있거나 했을 때, 변수가 많아 어려웠다.ex) "(()[[]])([])" ▶ 2 * (2 + 3 * 3) + 2 * 3 = 28 그래서 실제 연산이 아닌 분배 법칙을 이용하여 이 문제를 풀이했다. 위 식을 분배 법칙으로 바꿔본..