๋ฌธ์ (์ถ์ฒ: https://www.acmicpc.net/problem/26169)
< ์ธ ๋ฒ ์ด๋ด์ ์ฌ๊ณผ๋ฅผ ๋จน์ >
๋ฌธ์ ํ์ด
dfs๋ก ํ์ํ๋ฉด์ ์ธ ๋ฒ์ ์ด๋์ ํ์ ๋ ์ฌ๊ณผ๋ฅผ 2๊ฐ ์ด์ ๋จน์ ์ ์์ผ๋ฉด ์ข ๋ฃํ๋ค.
my solution (Java)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class _26169_ { // ์ธ ๋ฒ ์ด๋ด์ ์ฌ๊ณผ๋ฅผ ๋จน์
static int arr[][];
static boolean result, visited[][];
static int dx[] = { -1, 1, 0, 0 };
static int dy[] = { 0, 0, -1, 1 };
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
arr = new int[5][5];
visited=new boolean[5][5];
for (int i = 0; i < 5; i++) {
st = new StringTokenizer(bf.readLine());
for (int j = 0; j < 5; j++) {
arr[i][j] = Integer.parseInt(st.nextToken());
if(arr[i][j]==-1) visited[i][j]=true;
}
}
st = new StringTokenizer(bf.readLine());
int r = Integer.parseInt(st.nextToken());
int c = Integer.parseInt(st.nextToken());
result = false;
int num=0;
if(arr[r][c]==1) num+=1;
visited[r][c]=true;
dfs(r, c, 0, num);
if (result)
System.out.println("1");
else
System.out.println("0");
}
private static void dfs(int r, int c, int cnt, int num) {
if (cnt == 3) {
if (num >= 2) {
result = true;
return;
}
}
for(int i=0; i<4; i++) {
int x=r+dx[i];
int y=c+dy[i];
if(x>=0 && x<5 && y>=0 && y<5 && !visited[x][y]) {
visited[x][y]=true;
if(arr[x][y]==1) {
dfs(x,y,cnt+1, num+1);
}else {
dfs(x,y,cnt+1, num);
}
visited[x][y]=false;
}
}
}
}
Main
- arr : ๋ณด๋์ ์ ๋ณด ์ ๋ ฅ
- visited: ๋ฐฉ๋ฌธ ์ฌ๋ถ ํ์ (์ฅ์ ๋ฌผ์ด ์๋ ๊ฒฉ์๋ ๋ฐฉ๋ฌธํ ๊ฒ์ผ๋ก ํ์)
- ํ์ฌ ์์น r, c ์ ๋ ฅ
- ๋ง์ฝ ์ฃผ์ด์ง ํ์ฌ ์์น๊ฐ ์ฌ๊ณผ๊ฐ ์๋ ์นธ์ธ์ง ํ์ธ ํ ์ฌ๊ณผ๊ฐ ์๋ ์นธ์ด๋ผ๋ฉด num ๊ฐ ์ฆ๊ฐ
ํ์ฌ ์์น๋ ๋ฐฉ๋ฌธํ ๊ฒ์ด๋ฏ๋ก ๋ฐฉ๋ฌธ ํ์ ๋ฐ dfs ํจ์ ํธ์ถ
- result ๊ฐ์ด true๋ฉด ์ธ ๋ฒ ์ดํ์ ์ด๋์ผ๋ก ์ฌ๊ณผ๋ฅผ 2๊ฐ ์ด์ ๋จน์ ์ ์์ผ๋ฏ๋ก 1 ์ถ๋ ฅ. ์ฌ๊ณผ๋ฅผ 2๊ฐ ์ด์ ๋จน์ ์ ์๋ค๋ฉด 0 ์ถ๋ ฅ.
dfs(ํ์ฌ ์์ ์์น r, c, ์ด๋ ํ์, ๋จน์ ์ฌ๊ณผ ์)
- ์ข ๋ฃ ์กฐ๊ฑด : 3๋ฒ ์ด๋ํ์ผ๋ฉฐ ์ฌ๊ณผ๋ฅผ 2๊ฐ ์ด์ ๋จน์๋ค๋ฉด result๋ฅผ true๋ก ์ ์ฅ ํ ์ข ๋ฃ
- ์ํ์ข์ฐ๋ฅผ ํ์ํ๋ฉฐ ๋ณด๋ ๋ฒ์ ์์ด๋ฉฐ ์์ง ๋ฐฉ๋ฌธํ์ง ์์๋ค๋ฉด ๋ฐฉ๋ฌธ ํ์/ ์ด๋ํ ์นธ์ด ์ฌ๊ณผ๊ฐ ์๋ ์นธ์ด๋ผ๋ฉด ์ด๋ ํ์ +1, ์ฌ๊ณผ ์ +1๋ก dfs ํจ์ ํธ์ถ but ์ฌ๊ณผ๊ฐ ์๋ ์นธ์ด๋ผ๋ฉด ์ด๋ ํ์ +1 ํ dfs ํธ์ถ / dfs ํจ์ ํธ์ถ ํ ๋ค์ ํ์์ ์ํด ๋ฐฉ๋ฌธ ํ์๋ฅผ false๋ก ์ ์ฅ
๋ง๋ฌด๋ฆฌ๐ค
'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 13265_์์น ํ๊ธฐ (0) | 2023.06.13 |
---|---|
[Baekjoon] 11060_์ ํ ์ ํ (0) | 2023.06.12 |
[Baekjoon] 24484_์๊ณ ๋ฆฌ์ฆ ์์ - ๊น์ด ์ฐ์ ํ์ 6 (0) | 2023.06.07 |
[Baekjoon] 24483_์๊ณ ๋ฆฌ์ฆ ์์ - ๊น์ด ์ฐ์ ํ์ 5 (0) | 2023.06.06 |
[Baekjoon] 24482_์๊ณ ๋ฆฌ์ฆ ์์ - ๊น์ด ์ฐ์ ํ์ 4 (0) | 2023.06.05 |