๋ฐฑ์ค ๋ฌธ์ ๋ฅผ ํ๋ค ๋ฉ๋ชจ๋ฆฌ ์ด๊ณผ๋ฅผ ๋ง๋จ..
๋ถ๋ช ๋ค๋ฅธ์ฌ๋ ์ฝ๋์ ๊ฐ์๋ฐ, ์ ๋ฉ๋ชจ๋ฆฌ ์ด๊ณผ๊ฐ ๋๋์ง ์ด์ํ๋ค.
์ด์ ๋ bfs ๋ฐฉ๋ฌธ์ฒดํฌ ์์น๋ฅผ ์ ๋ชป ํด์
๊ฒฐ๋ก : ํ์ ์ฝ์ ํ๋ ์๊ฐ์ ๋ฐฉ๋ฌธ์ฒดํน์ ํด์ ์ค๋ณต์ ๋ฐฉ์งํ์
์๋ชป๋ ๋ฐฉ๋ฌธ์ฒดํฌ ์์น (ํ๋ฅผ ๋ฝ๋ ์๊ฐ ๋ฐฉ๋ฌธ์ฒดํฌ)
์๋ ์ฝ๋๋ ๋ฌธ์ ์ ์ฌ์ฉ๋ bfsํจ์ ์ผ๋ถ๋ถ์ ๋๋ค
static boolean move(){
Queue<int[]> tmp = new LinkedList<>();
while(!bq.isEmpty()){
int[] c = bq.poll();
int cr = c[0], cc=c[1];
if(cr==er && cc == ec){
return true;
}
chk[c[0]][c[1]]=true; // ๋ฐฉ๋ฌธ์ฒดํฌ
for(int d=0;d<4;d++){
int nr = c[0] + dr[d];
int nc = c[1] + dc[d];
if(nr<0 || nr>=R) continue;
if(nc<0 || nc>=C) continue;
if(chk[nr][nc]) continue;
if(map[nr][nc]=='.'){
bq.add(new int[]{nr,nc});
}else if (map[nr][nc]=='X'){
tmp.add(new int[]{nr,nc});
}
}
}
bq = tmp;
return false;
}
ํ์์ ๋ฝ๋ ์๊ฐ ๋ฐฉ๋ฌธ์ฒดํฌ๋ฅผ ์ํํ๋ค.
์ ์ ๋ ๊ฒ ํ๋๋ฉด ์์ ์ขํ์ ๋ฐฉ๋ฌธ์ฒดํฌ๋ฅผ ํ ๋ฒ์ ํ๋ ค๊ณ ..
์ด๋ ๊ฒ ํ๋ฉด, ์ค๋ณต๋ ์ขํ๊ฐ ํ์ ๋ค์ด๊ฐ๊ฒ ๋์ด์,, ๋ฉ๋ชจ๋ฆฌ ์ด๊ณผ
์ฌ๋ฐ๋ฅธ ๋ฐฉ๋ฌธ์ฒดํฌ(ํ์ ๋ฃ๋ ์๊ฐ ๋ฐฉ๋ฌธ์ฒดํฌ)
static boolean move(){
Queue<int[]> tmp = new LinkedList<>();
while(!bq.isEmpty()){
int[] c = bq.poll();
int cr = c[0], cc=c[1];
if(cr==er && cc == ec){
return true;
}
for(int d=0;d<4;d++){
int nr = c[0] + dr[d];
int nc = c[1] + dc[d];
if(nr<0 || nr>=R) continue;
if(nc<0 || nc>=C) continue;
if(chk[nr][nc]) continue;
chk[nr][nc]=true; // ๋ฐฉ๋ฌธ์ฒดํฌ
if(map[nr][nc]=='.'){
bq.add(new int[]{nr,nc});
}else if (map[nr][nc]=='X'){
tmp.add(new int[]{nr,nc});
}
}
}
bq = tmp;
return false;
}
ํ์ ๋ฃ๋ ์๊ฐ ๋ฐฉ๋ฌธ์ฒดํฌ๋ฅผ ์ํํ๋ค.
์ค๋ณต ์ขํ๊ฐ ํ์ ๋ค์ด๊ฐ์ง ์๊ฒ๋จ..!
์ด๋ ๊ฒ ํ๋ ค๋ฉด bfs ์ํ๋ถ๋ถ ๋ฐ์์ ์์ ์ขํ์ ๋ํ ๋ฐฉ๋ฌธ์ฒดํฌ๋ฅผ ์ํํด์ค์ผ ํ๋ค
'๐์ฝ๋ฉํ ์คํธ:CodingTest' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก์ด๋ ์์ ์๊ณ ๋ฆฌ์ฆ (0) | 2023.12.14 |
---|---|
๋ฐฑ์ค 9465 ์คํฐ์ปค (2) | 2023.11.29 |
[swea 1868-ํ์ด์ฌ] ํํํํ ์ง๋ขฐ์ฐพ๊ธฐ (0) | 2023.06.22 |
[swea 3304-ํ์ด์ฌ]์ต์ฅ ๊ณตํต ๋ถ๋ถ ์์ด (0) | 2023.06.21 |
[swea 3307-ํ์ด์ฌ]์ต์ฅ ์ฆ๊ฐ ๋ถ๋ถ ์์ด (0) | 2023.06.21 |