๋ฌธ์ (์ถ์ฒ: https://www.acmicpc.net/problem/12887)
< ๊ฒฝ๋ก ๊ฒ์ >
๋ฌธ์ ํ์ด
ํ์ ๊ฐ์๊ฐ ํญ์ 2์ด๋ฏ๋ก 0๋ฒ์งธ ํ๊ณผ 1๋ฒ์งธ ํ์์ ์์ํ ๊ฒฐ๊ณผ๋ฅผ ๋น๊ตํ๋ค. ์ต๋จ๊ฑฐ๋ฆฌ๋ ์ค๋ฅธ์ชฝ์ผ๋ก ๊ฐ ์ ์๋ค๋ฉด ์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋ํ๊ณ , ์ด๋ํ ์ ์๋ค๋ฉด ์ ๋๋ ์๋๋ก ์ด๋ํ๋ค. ์ด (๊ฒฉ์ํ์ ์นธ ์ - ๊ฒ์์ ์นธ ์ - ์ด๋ ์นธ ์)๋ฅผ ๊ตฌํ๋ค.
my solution (Java)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class _12887_ { // ๊ฒฝ๋ก ๊ฒ์
static boolean arr[][];
static int dx[] = { 0, -1, 1 };
static int dy[] = { 1, 0, 0 };
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
int m = Integer.parseInt(bf.readLine());
arr = new boolean[2][m];
int black = 0;
for (int i = 0; i < 2; i++) {
String str = bf.readLine();
for (int j = 0; j < m; j++) {
if (str.charAt(j) == '#') {
arr[i][j] = true;
black += 1;
} else {
arr[i][j] = false;
}
}
}
int result = 0;
if (!arr[0][0]) {
int cnt = check(0, 0);
if (result < 2 * m - cnt - black) {
result = 2 * m - cnt - black;
}
}
if (!arr[1][0]) {
int cnt = check(1, 0);
if (result < 2 * m - cnt - black) {
result = 2 * m - cnt - black;
}
}
System.out.println(result);
}
private static int check(int x, int y) {
int cnt = 1;
while (y < arr[0].length - 1) {
for (int i = 0; i < 3; i++) {
int a = x + dx[i];
int b = y + dy[i];
if (a >= 0 && a < 2 && b >= 0 && b < arr[0].length && !arr[a][b]) {
cnt += 1;
if (b == arr[0].length - 1) {
return cnt;
}
x = a;
y = b;
break;
}
}
}
return cnt;
}
}
๋ณ์)
m : ์ด์ ๊ฐ์
arr : ๊ฒฉ์ํ ์ ๋ณด
black : ๊ฒ์์ ์นธ ์
str : ํ ์ ๋ณด
result : ๋ฐ๊ฟ ์ ์๋ ํ์์ ์นธ์ ๊ฐ์์ ์ต๋๊ฐ
cnt : ๊ฒฝ๋ก ์นธ ์
์ด์ ๊ฐ์๋ฅผ ์ ๋ ฅ๋ฐ๋๋ค. ๊ฒฉ์ํ ์ ๋ณด๋ฅผ ์ ๋ ฅ๋ฐ์ ๊ฒ์์์ผ ๋ true๋ก ์ ์ฅํ๊ณ ํ์์์ผ ๋ false๋ก ์ ์ฅํ๋ค. ๊ฒฉ์ํ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ฉด์ ๊ฒ์์ ์นธ ์๋ฅผ ๊ตฌํ๋ค. [0,0] ๋ฒ์งธ๊ฐ ํ์์ ์นธ์ด๋ผ๋ฉด check ํจ์๋ฅผ ํธ์ถํ๋ค. [1,0] ๋ฒ์งธ๊ฐ ํ์์ ์นธ์ด๋ผ๋ฉด check ํจ์๋ฅผ ํธ์ถํ๋ค. ๋ฐํ ๊ฐ์ผ๋ก ๋ฐ์ ๊ฒฝ๋ก ์นธ ์์ ๊ฒ์์ ์นธ ์๋ฅผ ์ด ๊ฒฉ์ํ ์์์ ๋บ๋ค. ์ด ๊ฐ์ด ๋ฐ๊ฟ ์ ์๋ ํ์์ ์นธ์ ์์ด๋ฏ๋ก result์ ๋น๊ตํด ์ต๋๊ฐ์ ๊ตฌํ๋ค.
์ต์ข result๋ฅผ ์ถ๋ ฅํ๋ค.
check(int x, int y)
๊ฐ์ฅ ์ค๋ฅธ์ชฝ ์ด์ ๋์ฐฉํ๊ธฐ ์ ๊น์ง ๋ค์ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค.
์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋ ๊ฐ๋ฅ ํ๋ค๋ฉด ์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋ํ๋ค. ์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋ ๋ถ๊ฐ๋ฅํ๋ค๋ฉด ์ ๋๋ ์๋๋ก ์ด๋ํ๋ค. ์ด๋ ์ด๋ ์นธ ์๋ฅผ ์ผ๋ค. ๋ง์ฝ ๊ฐ์ฅ ์ค๋ฅธ์ชฝ ์ด์ ๋์ฐฉํ๋ค๋ฉด ๋ฐ๋ก ์ข ๋ฃํ๋ค.
์ฒ์์๋ ๋ฐฉ๋ฌธ์ฒ๋ฆฌ๋ฅผ ํ์ฉํ์ฌ ๊ฒฝ๋ก๋ฅผ ๊ตฌํ ํ ๊ฒ์์ ์นธ์ด ์๋๊ณ ๋ฐฉ๋ฌธํ์ง ์์ ๊ณณ์ ์ฐพ์ ๋ต์ ๊ตฌํ๋ ๋ฐฉ์์ผ๋ก ๊ตฌํํ๋ค. ์ด ๊ฒฝ์ฐ ํ๋ ธ์ต๋๋ค๋ฅผ ๋ฐ์๊ณ ๋ฏธ๋ฆฌ ์๋ฅผ ์ธ๋ ๊ฒ๊ณผ ์ด๋์ ์ฐจ์ด๊ฐ ๋ฐ์ํ๋์ง ์ ๋ชจ๋ฅด๊ฒ ๋ค.
'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 2072_์ค๋ชฉ (0) | 2024.06.18 |
---|---|
[Baekjoon] 1120_๋ฌธ์์ด (0) | 2024.06.17 |
[Baekjoon] 29891_์ฒดํฌํฌ์ธํธ ๋ฌ๋ฆฌ๊ธฐ (0) | 2024.06.13 |
[Baekjoon] 23246_Sport Climbing Combined (0) | 2024.06.12 |
[Baekjoon] 25325_ํ์ ์ธ๊ธฐ๋ ์ธก์ (0) | 2024.06.11 |