SWEA #1238 Solution 비상 연락망이 주어질 때 가장 나중에 연락을 받게 되는 사람 중 번호가 가장 큰 사람을 고르는 문제다. 이때 연락은 인접한 모든 곳에 동시에 주어진다. 그림과 같이 가운데 1이라고 적힌 부분에서 연락이 시작된다고 하면 오른쪽 각
문제는 (0,0)에서 시작해 (N-1, N-1)까지 갈 때 최소 비용을 구하는 것처음에는 dp를 풀 때 외발뛰기, 삼각형 위의 최대 경로 같은 문제들을 생각하며 dp로 풀어야 하나 생각했지만 링크는 동서남북으로 움직일 수 있으며 그때마다 이미 구했던 최적의 해는 바뀔
원판을 한 칸씩 돌릴 때마다 원판의 마지막 값이 가장 앞으로 오고, 앞의 값이 마지막 값으로 간다는 점에서 deque 자료 구조를 이용한다이웃한 원판의 수를 지울 때 bfs, 너비 우선 탐색을 이용하는데 이때 같은 원판 내에서 처음 끝과 마지막 값이 이웃한다는 점을 주
\[물고기는 자신의 위치와 방향을 가지고 있고, 상어에게 잡아먹히면 죽는다. 따라서 위치(y,x), 방향(d), 생존여부(alive)의 정보를 담은 구조체를 만든다맵의 한 칸에는 물고기의 번호 (여러 개 가능), 냄새가 저장된다. 따라서 물고기 번호 vector<
\[문제는 크게 파이어스톰을 크기가 2^L\*2^L인 부분으로 나누어 시계 방향으로 90도로 회전하는 부분, 얼음의 양을 줄이는 부분, 가장 큰 덩어리를 찾는 부분으로 나눈다참고로 비트 연산자 >>은 2의 거듭제곱으로 나누기, <<은 2의 거듭제곱을 곱할 때
\[단일 시작점 최단 경로 알고리즘으로, 시작 정점 s에서부터 다른 정점들까지의 최단 거리를 계산우선 순위 큐에 지금까지 찾아낸 해당 정점까지의 최단 거리, 정점의 번호를쌍으로 넣음 priority_queue <pair<int, int>> pq; 정점까지의
Lv3. 가장 먼 노드주어진 양방향 간선을 인접 리스트 그래프로 만들어 준다시작 정점 1에서부터 인접한 노드들 중 방문하지 않은 정점들을 queue에 넣어주며 bfs로 탐색한다해당 정점의 방문 거리는 이전 정점의 방문 거리+1 이다양방향 인접 리스트 만들기(어차피 di
낚시왕은 처음 (0,0)위치에 있다가 오른쪽으로 한 칸 이동한다낚시왕이 있는 열에서 가장 가까운 상어를 잡아 먹는다상어는 자신이 가지고 있는 방향으로 속도만큼 이동한다상어가 이동중 벽에 부딪칠경우 방향을 반대로 바꿔서 이동한다상어가 모두 이동을 마친 후 한 칸에 두 마
#16234 인구이동 💬 문제정리 국경선을 공유하는 두 나라의 인구 차이가 L이상, R이하라면 하루동안 국경선을 연다 국경선이 열린 나라들을 연합이라고 하며 각 칸의 인구수는 (연합의 인구수)/(연합을 이루고 있는 칸의 개수) 가 된다 연합을 해체하고 모든 국경선을
\[이전에 거의 비슷한 문제\[문제를 풀 때 미처 생각지 못한 조심해야하는 부분들이 있어서 문제를 해결하는데 상당히 오랜 시간이 걸렸다.1\. Initialize먼저 연구소의 모든 칸에 빈칸과 바이러스를 입력하며 빈칸의 갯수(emptySize)와 바이러스가 있는 좌표들
#16236 아기상어 **아기상어 **1. 처음의 크기는 2이고 상,하,좌,우로 1초에 한 칸씩 이동한다 자신보다 크기가 큰 물고기가 있는 칸은 지나갈 수 없다 자기보다 크기가 작은 물고기만 먹을 수 있다 크기가 같은 물고기는 먹을 순 없지만 지나갈 수는 있다 먹을
\[참고1 참고2Solution 1움직일 수 있는 모든 경우의 수를 selectDir\[] 배열에 넣고 크기가 5가 되었을 때 각 순서대로 이동해서 최댓값을 찾아본다. 크기가 5가 되는 모든 쌍을 dfs를 통해 구한다. 변수 지정 (상하좌우의 방향은 차례대로 0,1,2
\[참고1이때까지 많이 풀어보았던 BFS 문제들 처럼 똑같이 BFS 함수를 구현하고 현재 위치가 WALL=1 이면 BFS탐색을 통해 갈 수 있는 PATH=0의 개수를 count하고 리턴하여 그 수를 원래 WALL=1이 있던 자리에 넣어주고 이 과정을 WALL이 나올 때
\[Velog Posting \[벽 부수고 이동하기 첫 번째 문제와 다른 점은 첫 번째는 최대 1개까지 벽을 부술 수 있었지만 이번엔 K개까지 부술 수 있었다. 그래서 bool discovered\[MAX]\[MAX]\[2]에서 bool discovered\[MAX]\
\[\[풀이1벽은 부수거나, 1개만 부수거나이므로 처음에는 벽을 부수지 않았을 때 주어진 map 그대로 해서 distance를 구한다다음 map의 모든 정점을 순회하면서 WALL==1일 경우 해당 부분을 PATH=0으로 바꾸어주고 bfs 탐색 후 다시 WALL=1로 바
\[처음 문제를 봤을 땐 쉬운 문제라고 생각했는데 생각보다 까다로운 문제같다. bool visited\[]\[]우선 세 돌의 개수는 계속 변하므로 돌 세개를 처리하는 벡터를 만드려고 하니 너무 크기가 커졌다. 그런데 어차피 돌 무게 2개가 지정되면 나머지는 자동으로 정