https://school.programmers.co.kr/learn/courses/15009/lessons/121690#
ํ๋ก๊ทธ๋๋จธ์ค
SW๊ฐ๋ฐ์๋ฅผ ์ํ ํ๊ฐ, ๊ต์ก, ์ฑ์ฉ๊น์ง Total Solution์ ์ ๊ณตํ๋ ๊ฐ๋ฐ์ ์ฑ์ฅ์ ์ํ ๋ฒ ์ด์ค์บ ํ
programmers.co.kr
ํ๋ก๊ทธ๋๋จธ์ค PCCP ๋ชจ์๊ณ ์ฌ 2ํ - 4๋ฒ
์์์๊ฐ 1์๊ฐ ์ด์...
BFS ํ๋๋ชจ๋(?) ์ ํ, ์ถ์ ๋์ด๋๋ level 3
bfs ๋ฌธ์ ๋ฅผ ์ด๋ ๊ฒ๊น์ง ๊ผฌ์์ ๋ผ ์ ์๋ค๋... ์ผ์ฐจ์๋ฐฐ์ด๊น์ง ์ธ ์ค์ด์ผ ..
์ฒ์์ ๋ฌด์จ ๋๊ฐ์ ์ ํ๊น์ง ๊ณ ๋ ค๋ฅผ ํด์ผํ๋????๋ผ๋ ์์ฒญ ๋ณต์กํ ๊ณ ๋ฏผ์ ํ์๋๋ฐ,
๊ตณ์ด ๊ทธ๋ด ํ์์์ด, ์ ๋ฐ ์ฌ์ฉ ์ฌ๋ถ๋ง ์ฒดํฌํด์
์ ๋ฐ ๋ฏธ์ฌ์ฉ ์ํ -> dx/dy๋ฅผ 2๋ฐฐ๋ก ์ ์ฉํ๋ฉด ๋๋ ๋ฌธ์ ์๋ค. (๋๊ฐ์ ์ ๊ณ ๋ ค X)
๊ทธ๋ฆฌ๊ณ visited[][][0]์ ์ ๋ฐ ๋ฏธ์ฌ์ฉ ์ํ๋ก ์ด๋ํ์ ๊ฒฝ์ฐ, visited[][][1]์ ์ ๋ฐ์ ์ฌ์ฉํด์ ์ด๋ํ์ ๊ฒฝ์ฐ๋ฅผ ์ ์ฅํ์
์ด๋ ค์ ๋ค ๐ซ
์ฐธ๊ณ ์ฉ ํ ์คํธ์ผ์ด์ค)
๋์ ํ์ด
#include <string>
#include <vector>
#include <queue>
#include <climits>
#include <iostream>
using namespace std;
int dx[4] = {0,1,0,-1};
int dy[4] = {1,0,-1,0};
int visited[1001][1001][2] = {0}; // 0: ์ ๋ฐ X, 1: ์ ๋ฐ O
bool canGo(int n, int m, int x, int y, int shoes){
if(x<1 || y<1 || x>n || y>m) return false;
if(visited[x][y][shoes]>0) return false;
return true;
}
int solution(int n, int m, vector<vector<int>> hole) {
int answer = INT_MAX;
for(auto h:hole){
visited[h[0]][h[1]][0] = 9; // ํจ์ ์ 9๋ก ํ์
visited[h[0]][h[1]][1] = 9;
}
queue<vector<int>> q; // 0:x, 1:y, 2:count, 3: ์ ๋ฐ ์ฌ์ฉ ์ฌ๋ถ
q.push({1,1,0,0});
visited[1][1][0] = 1;
visited[1][1][1] = 1;
while(!q.empty()){
vector<int> v = q.front();
q.pop();
if(v[0]==n && v[1]==m){
if(answer > v[2]) answer = v[2];
}
for(int i=0; i<4; ++i){
int nx = v[0] + dx[i];
int ny = v[1] + dy[i];
if(canGo(n, m, nx, ny, v[3])){
q.push({nx,ny,v[2]+1,v[3]});
visited[nx][ny][v[3]] = 1;
}
}
if(v[3]==0){ // ์ ๋ฐ ๋ฏธ์ฌ์ฉ ์
for(int i=0; i<4; ++i){
int nx = v[0] + 2*dx[i];
int ny = v[1] + 2*dy[i];
if(canGo(n, m, nx, ny, 1)){
q.push({nx,ny,v[2]+1,1});
visited[nx][ny][1] = 1;
}
}
}
}
if(answer == INT_MAX) answer = -1;
return answer;
}
๋ชจ์๊ณ ์ฌ ๋ค ํ์ด๋ดค๋๋ ์๋ฃ์ฆ๋ ์ค๋ค ใ ใ ๐
'๐ ์๊ณ ๋ฆฌ์ฆ > Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[C++/PGS] [PCCP ๋ชจ์๊ณ ์ฌ #1] 1๋ฒ - ์ธํจ์ด ์ํ๋ฒณ (0) | 2025.05.02 |
---|---|
[C++/PGS] [PCCP ๋ชจ์๊ณ ์ฌ #1] 4๋ฒ - ์ด์์ฒด์ (0) | 2025.05.02 |
[C++/PGS] [PCCP ๋ชจ์๊ณ ์ฌ #2] 3๋ฒ - ์นดํ ํ์ฅ (0) | 2025.05.01 |
[C++/PGS] [PCCP ๋ชจ์๊ณ ์ฌ #2] 2๋ฒ - ์ ์ ์ฌ์ ๊ต์ก (2) | 2025.04.28 |
[C++/PGS] [PCCP ๋ชจ์๊ณ ์ฌ #2] 1๋ฒ - ์ค์ต์ฉ ๋ก๋ด (0) | 2025.04.28 |