Notice
Recent Posts
Recent Comments
Link
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- ํธ๋ผ์ด
- Union Find
- BFS
- Django
- ์ด๋ถํ์
- ํ๋ก์ด๋์์
- ์ฐ์ ์์ํ
- ์นด์นด์ค
- ๋ค์ต์คํธ๋ผ
- Dijkstra
- ํฌํฌ์ธํฐ
- ์ด์งํธ๋ฆฌ
- LowerBound
- dp
- ์ฌ๊ท
- dfs
- ์๋ฃ๊ตฌ์กฐ
- upperbound
- ์ธ๊ทธ๋จผํธํธ๋ฆฌ
- ๊ตฌํ
- ์๋ฎฌ๋ ์ด์
- ๊ทธ๋ฆฌ๋
- ์์ด
- ์กฐํฉ
- ๋ฐฑํธ๋ํน
- ๋ถ๋ถ์งํฉ
- Floyd
- ๋นํธ๋ง์คํน
- PriorityQueue
- ํ์๊ฐ์
Archives
- Today
- Total
J
[JAVA] BOJ ๋ฐฑ์ค 1941 ์๋ฌธ๋ ์น ๊ณต์ฃผ ๋ณธ๋ฌธ
๐ Problem Solving/๐ BOJ
[JAVA] BOJ ๋ฐฑ์ค 1941 ์๋ฌธ๋ ์น ๊ณต์ฃผ
snowball๐ฐ 2023. 4. 12. 13:19https://www.acmicpc.net/problem/1941
1941๋ฒ: ์๋ฌธ๋ ์น ๊ณต์ฃผ
์ด 25๋ช ์ ์ฌํ์๋ค๋ก ์ด๋ฃจ์ด์ง ์ฌํ์๋ฐ์ 5×5์ ์ ์ฌ๊ฐํ ๊ฒฉ์ ํํ๋ก ์๋ฆฌ๊ฐ ๋ฐฐ์น๋์๊ณ , ์ผ๋ง ์ง๋์ง ์์ ์ด๋ค์๊ณผ ์๋์ฐ์ด๋ผ๋ ๋ ํ์์ด ๋๊ฐ์ ๋ํ๋ด๋ฉฐ ๋ค๋ฅธ ํ์๋ค์ ํ์ด์ก๊ธฐ ์์
www.acmicpc.net
๐ก ๋ถ๋ถ์งํฉ๊ณผ BFS๋ฅผ ํ์ฉํ์ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์๋ค.
1. ๋ถ๋ถ ์งํฉ์ ํตํด 5X5 ์ขํ์์ 7๊ฐ๋ฅผ ๊ณจ๋ผ์ค๋ค.
2. ์ด๋ 'Y'์ ๊ฐ์๊ฐ 3๊ฐ์ด์์ด๋ฉด return ํด์ค๋ค.
3. 7๊ฐ๋ฅผ ๊ณจ๋ผ์ฃผ๋ฉด BFS๋ฅผ ํตํด ์๋ก ์ฐ๊ฒฐ๋์ด ์๋์ง ํ์ธํด์ค๋ค.
์ ์ฒด ์ฝ๋
import java.util.*;
import java.io.*;
public class Main {
static char[][] classroom;
static int result;
static int[] dx = {0, 1, 0, -1}, dy = {1, 0, -1, 0};
public static void main(String args[]) throws Exception{
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
classroom = new char[5][5];
for(int i=0; i<5; i++) {
String s = bf.readLine();
for(int j=0; j<5; j++)
classroom[i][j] = s.charAt(j);
}
subset(0, 0, 0, 0);
System.out.println(result);
}
static boolean[][] v = new boolean[5][5];
static void subset(int x, int y, int yeon, int count) {
if(yeon >= 4 || count > 7) return;
boolean[][] visited = new boolean[5][5];
if(x==4&& y==5) {
ArrayDeque<int[]> q = new ArrayDeque<>();
f: for(int i=0; i<5; i++)
for(int j=0; j<5; j++)
if(v[i][j]) {
q.offer(new int[] {i, j});
visited[i][j] = true;
break f;
}
int cnt = 1;
while(!q.isEmpty()) {
int[] now = q.poll();
for(int d=0; d<4; d++) {
int nx = now[0]+dx[d];
int ny = now[1]+dy[d];
if(nx<0||ny<0||nx>=5||ny>=5|| (!v[nx][ny]) || visited[nx][ny]) continue; // v๋ ์ ํ๋ ์ขํ๋ง์ visited๋ ํ์ธ๋ ์ขํ์ธ์ง ๊ฒ์ฌ
cnt++;
visited[nx][ny] = true;
q.offer(new int[] {nx, ny});
}
}
if(cnt == 7) // ์ฐ๊ฒฐ๋๊ฒ์ด 7๊ฐ๋ผ๋ฉด 7๊ฐ๊ฐ ์๋ก ์ ๋ถ ์ฐ๊ฒฐ๋์ด์๋ค๋ ๋ป
result++;
return;
}
if(y==5) {
subset(x+1, 0, yeon, count);
return;
}
v[x][y] = true;
if(classroom[x][y] == 'S') // Y์ธ ๊ฒฝ์ฐ yeon ์ฆ๊ฐ, ์๋๋ฉด ๊ทธ๋๋ก
subset(x, y+1, yeon, count+1);
else
subset(x, y+1, yeon+1, count+1);
v[x][y] = false;
subset(x, y+1, yeon, count);
}
}
'๐ Problem Solving > ๐ BOJ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JAVA] BOJ ๋ฐฑ์ค 14725 ๊ฐ๋ฏธ๊ตด (2) | 2023.05.10 |
---|---|
[JAVA] BOJ ๋ฐฑ์ค 5052 ์ ํ๋ฒํธ ๋ชฉ๋ก (0) | 2023.05.10 |
[JAVA] BOJ ๋ฐฑ์ค 9205 ๋งฅ์ฃผ ๋ง์๋ฉด์ ๊ฑธ์ด๊ฐ๊ธฐ (0) | 2023.04.04 |
[JAVA] BOJ ๋ฐฑ์ค 1194 ๋ฌ์ด ์ฐจ์ค๋ฅธ๋ค, ๊ฐ์ (0) | 2023.03.31 |
[JAVA] BOJ ๋ฐฑ์ค 16724 ํผ๋ฆฌ ๋ถ๋ ์ฌ๋์ด (0) | 2023.03.29 |
Comments