๋ฌธ์ (์ถ์ฒ: https://www.acmicpc.net/problem/9518)
< ๋ก๋ง ์นดํจ๋ฆญ ๋ฏธ์ฌ >
๋ฌธ์ ํ์ด
๋น์๋ฆฌ ์ค ๊ฐ์ฅ ๋ง์ ์ด์์ด ์๋ ์์น + ์ฌ๋์ด ์์์๋ ์๋ฆฌ์ ์ด์ ์ (์ค๋ณต x)
my solution (Java)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class _9518_ { // ๋ก๋ง ์นดํจ๋ฆญ ๋ฏธ์ฌ
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(bf.readLine());
int R = Integer.parseInt(st.nextToken());
int S = Integer.parseInt(st.nextToken());
char arr[][] = new char[R][S];
for (int i = 0; i < R; i++) {
String str = bf.readLine();
for (int j = 0; j < S; j++) {
arr[i][j] = str.charAt(j);
}
}
int max = 0, result = 0;
boolean visited[][] = new boolean[R][S];
int dx[] = { -1, 1, 0, 0, -1, -1, 1, 1 };
int dy[] = { 0, 0, -1, 1, -1, 1, -1, 1 };
for (int i = 0; i < R; i++) {
for (int j = 0; j < S; j++) {
if (arr[i][j] == 'o') {
visited[i][j] = true;
for (int k = 0; k < 8; k++) {
int x = i + dx[k];
int y = j + dy[k];
if (x >= 0 && x < R && y >= 0 && y < S && arr[x][y] == 'o' && !visited[x][y]) {
result += 1;
}
}
continue;
}
int cnt = 0;
for (int k = 0; k < 8; k++) {
int x = i + dx[k];
int y = j + dy[k];
if (x >= 0 && x < R && y >= 0 && y < S && arr[x][y] == 'o') {
cnt += 1;
}
}
if (cnt > max) {
max = cnt;
}
}
}
System.out.println(result + max);
}
}
๋ณ์)
R, S : ํ, ์ด
arr : ์ฌ๋์ ๋ฐฐ์น
max, result : ๋น์๋ฆฌ ์ค์์ ์ ์ํ ์ ์๋ ์ต๋๊ฐ, ์ด๋ฏธ ์์์๋ ์ฌ๋์ ์ ์ ํ์
visited : ์ ์ ์ฌ๋ถ
dx, dy : ์ด์
ํ, ์ด์ ์ ๋ ฅ๋ฐ๋๋ค. ์ฌ๋์ ๋ฐฐ์น ์ ๋ณด๋ฅผ ์ ๋ ฅ๋ฐ์ arr์ ์ ์ฅํ๋ค. arr์ ์ ์ฒด ํ์ํ๋ค.
1) ์ฌ๋์ด ์์์๋ ์๋ฆฌ๋ผ๋ฉด ์ ์ ์ฌ๋ถ๋ฅผ true๋ก ์ ์ฅํ ํ ์ธ์ ํ ์นธ ์ฌ๋ ์นธ์ ์ดํด๋ณด๋ฉฐ ์ด์ ์ค ์ ์ํ์ง ์์ ์ฌ๋์ ์๋ฅผ ์ผ๋ค.
2) ๋น์๋ฆฌ๋ผ๋ฉด ์ธ์ ํ ์นธ ์ฌ๋ ์นธ์ ์ดํด๋ณด๋ฉฐ ์ด์์ ์๋ฅผ ์ผ๋ค. max๋ฅผ ์ต๋๊ฐ์ผ๋ก ์ ๋ฐ์ดํธํ๋ค.
์ต์ข result์ max์ ํฉ์ ์ถ๋ ฅํ๋ค.
'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 2757_์์ (0) | 2024.07.15 |
---|---|
[Baekjoon] 28256_์ด์ฝ๋ฆฟ ๋ณด๊ดํจ (1) | 2024.07.12 |
[Baekjoon] 5637_๊ฐ์ฅ ๊ธด ๋จ์ด (0) | 2024.07.10 |
[Baekjoon] 30803_์๋๊ผญ์ง (0) | 2024.07.09 |
[Baekjoon] 1980_ํ๋ฒ๊ฑฐ ์ฌ๋ (0) | 2024.07.08 |