알고리즘/풀이 51

7562번 나이트의 이동 - C++

✅️[문제] https://www.acmicpc.net/problem/7562 7562번: 나이트의 이동 체스판 위에 한 나이트가 놓여져 있다. 나이트가 한 번에 이동할 수 있는 칸은 아래 그림에 나와있다. 나이트가 이동하려고 하는 칸이 주어진다. 나이트는 몇 번 움직이면 이 칸으로 이동할 수 www.acmicpc.net ✅️[풀이] 나이트의 이동을 BFS로 풀면 된다. 한 번의 이동을 8번으로 늘리면 된다! 그리고 목표 좌표에 도착하면 vis 값을 출력한다. ✅️[코드] #include using namespace std; #define X first #define Y second int dx[8] = {-2,-1,1,2,-2,-1,1,2}; int dy[8] = {-1,-2,-2,-1,1,2,2,1}..

알고리즘/풀이 2022.08.02

5427번 불 - C++

✅️[문제] https://www.acmicpc.net/problem/5427 5427번: 불 상근이는 빈 공간과 벽으로 이루어진 건물에 갇혀있다. 건물의 일부에는 불이 났고, 상근이는 출구를 향해 뛰고 있다. 매 초마다, 불은 동서남북 방향으로 인접한 빈 공간으로 퍼져나간다. 벽에 www.acmicpc.net ✅️[풀이] BFS 문제이다! 불이 먼저 이동 하기 위해 불을 먼저 큐에 넣어두고, 상근이의 위치를 맨 나중에 넣어준다. 그리고 3차원 배열 vis를 통해 불의 이동과 상근이의 이동을 분리 시켜주고, 상근이가 가장자리에 도착했다면 vis값을 출력한 후 탈출시킨다. ✅️[코드] #include using namespace std; #define X first #define Y second int v..

알고리즘/풀이 2022.08.02

1012번 유기농 배추 - C++

✅️[문제] https://www.acmicpc.net/problem/1012 1012번: 유기농 배추 차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 www.acmicpc.net ✅️[풀이] BFS 문제! 단순히 BFS를 돌릴때 방문횟수가 없는 큐에 처음 넣을때 ans+=1을 해주면 되는 문제이다! ✅️[코드] #include using namespace std; #define X first #define Y second int arr[52][52]; bool vis[52][52]; int dx[4] = {1,0,-1,0}; int dy[4] = {0,1,0,-1}; in..

알고리즘/풀이 2022.07.31

10026번 적록색약 - C++

✅️[문제] https://www.acmicpc.net/problem/10026 10026번: 적록색약 적록색약은 빨간색과 초록색의 차이를 거의 느끼지 못한다. 따라서, 적록색약인 사람이 보는 그림은 아닌 사람이 보는 그림과는 좀 다를 수 있다. 크기가 N×N인 그리드의 각 칸에 R(빨강), G(초록) www.acmicpc.net ✅️[풀이] BFS 문제 적록색약이 아닌 경우, 이중 for문을 돌려 방문횟수가 없는 경우 ans+=1을 해주고, 큐에 넣어 BFS를 진행한다. 적록색약인 경우, 앞서와 같이 이중 for문을 돌려 방문횟수가 없는 경우 ans+=1을 해주고, 큐에 넣는다. BFS를 진행할때 색이 R or G인 경우에 B가 나오면 continue를 시키면 된다! ✅️[코드] #include usi..

알고리즘/풀이 2022.07.31

1697번 숨바꼭질 - C++

✅️[문제] https://www.acmicpc.net/problem/1697 1697번: 숨바꼭질 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 www.acmicpc.net ✅️[풀이] ❗️주의할점은 인덱스가 200000을 넘기면 안된다는 것이다! 인덱스가 200000을 넘어가면 OutofBound 에러가 생기므로 주의하자. ✅️ 각각의 좌표마다 +1, -1, ×2를 해주어 좌표를 누적하여 더한후, k에 도달하면 출력해주면 된다! ✅️[코드] #include using namespace std; int arr[2000100]; ..

알고리즘/풀이 2022.07.29

7576번 토마토 - C++

✅️[문제] https://www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net ✅️[풀이] ❗️(m,n) 에서 좌표중 값이 1인 것을 큐에 넣는다! BFS를 돌려서, 이동 가능한 좌표에 이전 좌표의 값 + 1을 해주는 방식이다. (m,n)에 대해 좌표값중 0이 있으면 불가능으로 판단하고, 0이 없는 경우 각 좌표의 최댓값을 출력하면 된다! ✅️[코드] #include using namespace std; #define X first #define..

알고리즘/풀이 2022.07.29