์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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
- Flutter
- programmers
- php ํ๋ก๊ทธ๋๋ฐ ์ ๋ฌธ
- ํ๋ฌํฐ ๊ฐ๋ฐํ๊ฒฝ ์ค์
- php ํ๋ก๊ทธ๋๋ฐ ์ ๋ฌธ ์๋ฃจ์
- ํ๋ฌํฐ
- php ํ๋ก๊ทธ๋๋ฐ ์ ๋ฌธ 3ํ
- Java
- C์ธ์ด
- php ํ๋ก๊ทธ๋๋ฐ ์ ๋ฌธ ์ฐ์ต๋ฌธ์
- spring
- ๋ฐฐ์ด
- ํ์ ๋ถ๊ธฐ
- ์๋ฐ ์คํ๋ง
- php ํ๋ก๊ทธ๋๋ฐ
- ์คํ๋ง
- php ํ๋ก๊ทธ๋๋ฐ ์ ๋ฌธ ์์
- JAVA SPRING
- ์ต๋จ ๊ฒฝ๋ก
- ์๋ฐ
- ํ์ด์ฝ ์ถ์ฒ์ธ
- ํ์ด์ฝ ์น๊ตฌ์ฝ๋
- C
- ํ์ด์ฌ
- SWEA
- php
- ํ์ด์ฝ ์ถ์ฒ์ธ์ฝ๋
- php ํ๋ก๊ทธ๋๋ฐ ์ ๋ฌธ ๋ฌธ์ ํ์ด
- ๋ฐฑ์ค
- ํ์ด์ฝ ์ด๋์ฝ๋
Archives
- Today
- Total
03-11 05:31
ImJay
[BOJ/Java] 2931. ๊ฐ์ค๊ด ๋ณธ๋ฌธ
๋ฐ์ํ
๐ [BOJ/Java] 2931. ๊ฐ์ค๊ด
๐ก ๋ฌธ์ ํด์
๋์์๋ ์ฌ๋ฌ ๊ฐ์ ๊ฐ์ค๊ด์ด ์ค์น๋์ด ์์ผ๋ฉฐ, ๊ฐ์ค๊ด์ ์ผ์ ํ ํจํด์ ๋ธ๋ก์ผ๋ก ์ด๋ฃจ์ด์ ธ ์๋ค.
์ด๋ ๋ ํ๋์ ๋ธ๋ก์ด ์ฌ๋ผ์ง๋ ์ฌ๊ณ ๊ฐ ๋ฐ์ํ์ฌ, ์ด๋ฅผ ์ฐพ์ ์๋์ ๋ธ๋ก์ ๋ณต๊ตฌํด์ผ ํ๋ค.
๐น ์ฃผ์ด์ง ์ ๋ณด
- N × M ํฌ๊ธฐ์ ๋์ ์ง๋ (.: ๋น์นธ, + - | 1 2 3 4 M Z: ๊ฐ์ค๊ด)
- M: ๊ฐ์ค๊ฐ ์์๋๋ ์์น
- Z: ๊ฐ์ค๊ฐ ๋์ฐฉํ๋ ์์น
โ
๋ชฉํ:
1๏ธโฃ ์ฌ๋ผ์ง ๋ธ๋ก์ ์์น๋ฅผ ์ฐพ์ ์ถ๋ ฅ
2๏ธโฃ ํด๋น ์์น์ ๋ค์ด๊ฐ ์ฌ๋ฐ๋ฅธ ๋ธ๋ก ์ข
๋ฅ๋ฅผ ์ถ๋ ฅ
๐ ํ์ด ๊ณผ์
1๏ธโฃ ์ฌ๋ผ์ง ๋ธ๋ก(.) ์ฐพ๊ธฐ
- ๊ฐ์ค๊ด์ ๋ฐ๋ผ๊ฐ๋ค๊ฐ ์ฐ๊ฒฐ์ด ๋๊ธด ์ง์ ์ ์ฐพ๋๋ค.
2๏ธโฃ ์ฌ๋ผ์ง ๋ธ๋ก์ด ๊ฐ์ง ์ ์๋ ํํ ํ์
- + - | 1 2 3 4 ์ค ์ฌ๋ฐ๋ฅธ ๋ธ๋ก์ ๊ฒฐ์
- ์ฐ๊ฒฐ๋ ๋ธ๋ก๋ค์ ๋ฐฉํฅ์ ๊ณ ๋ คํ์ฌ ๊ฐ๋ฅํ ๋ธ๋ก์ ์ฐพ๋๋ค.
3๏ธโฃ BFS๋ฅผ ํ์ฉํ ๊ฐ์ค๊ด ํ์
- M์์ ์์ํ์ฌ ๊ฐ์ค๊ด์ ๋ฐ๋ผ ์ด๋ํ๋ฉฐ ์ฐ๊ฒฐ๋ ๋ธ๋ก ํ์
- .์ ๋ง๋๋ ์๊ฐ ๋์ด์ก์ผ๋ฏ๋ก ์ฌ๋ผ์ง ๋ธ๋ก์ ์์น ๊ธฐ๋ก
๐ป ์ฝ๋ (Java)
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Main {
static int R, C;
static char[][] map;
static final int[] dx = {-1, 1, 0, 0}; // ์, ํ, ์ข, ์ฐ
static final int[] dy = {0, 0, -1, 1};
static final int TOP = 0, BOTTOM = 1, LEFT = 2, RIGHT = 3;
public static void main(String[] args) throws Exception {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String[] input = in.readLine().split(" ");
R = Integer.parseInt(input[0]);
C = Integer.parseInt(input[1]);
map = new char[R][C];
for (int i = 0; i < R; i++) {
map[i] = in.readLine().toCharArray();
}
for (int i = 0; i < R; i++) {
for (int j = 0; j < C; j++) {
if (map[i][j] == '.' && check(i, j)) {
return;
}
}
}
}
private static boolean check(int x, int y) {
boolean[] connected = new boolean[4];
if (isValid(x + dx[TOP], y + dy[TOP]) && canComeBottom(map[x + dx[TOP]][y + dy[TOP]])) {
connected[TOP] = true;
}
if (isValid(x + dx[BOTTOM], y + dy[BOTTOM]) && canComeTop(map[x + dx[BOTTOM]][y + dy[BOTTOM]])) {
connected[BOTTOM] = true;
}
if (isValid(x + dx[LEFT], y + dy[LEFT]) && canComeRight(map[x + dx[LEFT]][y + dy[LEFT]])) {
connected[LEFT] = true;
}
if (isValid(x + dx[RIGHT], y + dy[RIGHT]) && canComeLeft(map[x + dx[RIGHT]][y + dy[RIGHT]])) {
connected[RIGHT] = true;
}
char correctPipe = findCorrectPipe(connected);
if (correctPipe != '?') {
System.out.println((x + 1) + " " + (y + 1) + " " + correctPipe);
return true;
}
return false;
}
private static char findCorrectPipe(boolean[] connected) {
if (connected[TOP] && connected[BOTTOM] && connected[LEFT] && connected[RIGHT]) return '+';
if (connected[TOP] && connected[BOTTOM]) return '|';
if (connected[LEFT] && connected[RIGHT]) return '-';
if (connected[BOTTOM] && connected[RIGHT]) return '1';
if (connected[TOP] && connected[RIGHT]) return '2';
if (connected[TOP] && connected[LEFT]) return '3';
if (connected[BOTTOM] && connected[LEFT]) return '4';
return '?';
}
private static boolean canComeTop(char c) {
return c == '|' || c == '+' || c == '2' || c == '3';
}
private static boolean canComeBottom(char c) {
return c == '|' || c == '+' || c == '1' || c == '4';
}
private static boolean canComeLeft(char c) {
return c == '-' || c == '+' || c == '3' || c == '4';
}
private static boolean canComeRight(char c) {
return c == '-' || c == '+' || c == '1' || c == '2';
}
private static boolean isValid(int x, int y) {
return x >= 0 && x < R && y >= 0 && y < C;
}
}
โฑ ์๊ฐ ๋ณต์ก๋ ๋ถ์
- BFS ํ์ → O(N × M)
- ๊ฐ๋ฅํ ๋ธ๋ก ํ์ → O(7 × 4) = O(28) (์์ ์๊ฐ)
- ์ด ์๊ฐ ๋ณต์ก๋ → O(N × M), ์ถฉ๋ถํ ํด๊ฒฐ ๊ฐ๋ฅ
๐ง ๋๋ ์
โ
์๋ฐฉํฅ ์ฐ๊ฒฐ์ ๊ณ ๋ คํ๋ ๊ฒ์ด ์ค์ํ๋ค.
โ
์ฌ๋ฐ๋ฅธ ๋ธ๋ก์ ์ฐพ์ ๋ ๋ชจ๋ ๋ฐฉํฅ์์ ์ฐ๊ฒฐ ๊ฐ๋ฅ ์ฌ๋ถ๋ฅผ ์ฒดํฌํด์ผ ํ๋ค.
โ
์ถ๋ ฅ ์ขํ๋ 1๋ถํฐ ์์ํ๋ฏ๋ก ์ฃผ์ํด์ผ ํ๋ค.
๐ ๋ํ ์ผํ ์กฐ๊ฑด์ ์ ํํ ์ฒ๋ฆฌํ๋ ๊ฒ์ด ํต์ฌ์ธ ๋ฌธ์ ์๋ค! ๐
๋ฐ์ํ
'์๊ณ ๋ฆฌ์ฆ > BOJ - Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ/Java] 11404. ํ๋ก์ด๋ (0) | 2025.03.10 |
---|---|
[BOJ/Java] 11657. ํ์๋จธ์ (0) | 2025.03.10 |
[BOJ/Java] 1981. ๋ฐฐ์ด์์ ์ด๋ (1) | 2025.03.10 |
[BOJ/Java] 9370. ๋ฏธํ์ธ ๋์ฐฉ์ง (0) | 2025.03.10 |
[BOJ/Java] 1039. ๊ตํ (0) | 2025.03.10 |
Comments