Tags
- LV2
- BOJ
- ๊ต์ฌ
- ์ ์๋ก
- ์๋ฎฌ๋ ์ด์
- DP
- ๊ทธ๋ํ ์ด๋ก
- dfs
- sort
- Python
- ์๋ฃ๊ตฌ์กฐ
- ๊ทธ๋ํ ํ์
- BFS
- Dynamic Programming
- queue
- PGM
- Brute Force Algorithm
- Java
- ์ ๋ ฌ
- Study
- SpringBoot
- stack
- ๋ฐฑํธ๋ํน
- ๋๋น ์ฐ์ ํ์
- ๋ฌธ์์ด
- CodingTest
- ๊น์ด ์ฐ์ ํ์
- ์ํ
- greedy
- ๊ตฌํ
Archives
๊ธฐ๋ก๋ฐฉ
BOJ_14890 : ๊ฒฝ์ฌ๋ก ๋ณธ๋ฌธ
๐ธ ๋ฌธ์ ๋ถ์ ๐ธ
- N x N ์ง๋์์ ์ง๋๊ฐ ์ ์๋ ๊ธธ์ด ๋ช ๊ฐ์ธ์ง ์ถ๋ ฅํ๋ค.
- ๊ธธ์ ์ง๋๊ฐ๋ ค๋ฉด ๋์ด๊ฐ ๋ชจ๋ ๊ฐ๊ฑฐ๋, ๊ฒฝ์ฌ๋ก๋ฅผ ์ค์นํด์ผ ํ๋ค.
- ๊ฒฝ์ฌ๋ก๋ ๋์ด ์ฐจ์ด๊ฐ 1์ด๊ณ , L ๋งํผ์ ๊ณต๊ฐ์ด ํ๋ณด๋์ด์ผ ํ๋ค.
- ๋, ๊ฒฝ์ฌ๋ก๋ ๋ฐ๋ ๋ฐฉํฅ์ผ๋ก ๊ฒน์น ์ ์๊ณ , ๋งต์ ๋ฒ์ด๋์๋ ์๋๋ค. (๊ฐ๋ก,์ธ๋ก๋ ๊ฒน์ณ๋ ๋๋ค)
- ํ๊ณผ ์ด ํ ์ค์ฉ ๋ณต์ฌํด์ ํ์ธํ๋ ๋ฐฉ์์ผ๋ก ์ง๋๊ฐ ์ ์๋ ๊ธธ์ ์นด์ดํธํ๋ค.
- ๊ฒฝ์ฌ๋ก๋ฅผ ๋์ ๊ณณ์ ์ฒดํฌํ๋ฉด์ ์ง๋๊ฐ ์ ์๋์ง ํ์ธํ๋ค.
๐ธ ์ฝ๋ ๐ธ
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
private static int N, L;
public static void main(String[] args) throws IOException {
// Input
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
N = Integer.parseInt(st.nextToken());
L = Integer.parseInt(st.nextToken());
int[][] map = new int[N][N];
for (int i = 0; i < N; i++) {
st = new StringTokenizer(br.readLine());
for (int j = 0; j < N; j++) {
map[i][j] = Integer.parseInt(st.nextToken());
}
}
// ํ ์ค์ฉ ๋ณต์ฌ ํ ํ์ธ
int[] line = new int[N];
int ans = 0;
for (int i = 0; i < N; i++) {
// ํ ๋ณต์ฌ
for (int j = 0; j < N; j++)
line[j] = map[i][j];
if (lineCheck(line))
ans++;
// ์ด ๋ณต์ฌ
for (int j = 0; j < N; j++)
line[j] = map[j][i];
if (lineCheck(line))
ans++;
}
// Output
System.out.print(ans);
}
private static boolean lineCheck(int[] line) {
boolean[] check = new boolean[N];
for (int i = 1; i < N; i++) {
int gab = Math.abs(line[i] - line[i-1]);
if (gab > 1) return false;
else if(gab == 1) { // ๊ฒฝ์ฌ๋ก ๋์์ผ ํจ
if (line[i-1] > line[i]) { // ์์ชฝ์ด ๋ ํฐ ๊ฒฝ์ฐ -> ๋ค์ Lํฌ๊ธฐ ๊ณต๊ฐ ํ์
for (int j = i; j < i+L; j++) {
if (j >= N || check[j] || line[j] != line[i]) return false; // ๋งต์ ๋ฒ์ด๋จ, ๊ฒน์นจ, ๊ณต๊ฐ ์์ผ๋ฉด ๊ฒฝ์ฌ๋ก ๋ชป๋์
check[j] = true;
}
} else { // ๋ค์ชฝ์ด ๋ ํฐ ๊ฒฝ์ฐ -> ์์ Lํฌ๊ธฐ ๊ณต๊ฐ ํ์
for (int j = i-1; j > i-1-L; j--) {
if (j < 0 || check[j] || line[j] != line[i-1]) return false; // ๋งต์ ๋ฒ์ด๋จ, ๊ฒน์นจ, ๊ณต๊ฐ ์์ผ๋ฉด ๊ฒฝ์ฌ๋ก ๋ชป๋์
check[j] = true;
}
}
}
}
return true;
}
}
๐ธ ์ฝ๋ ํด์ ๐ธ
- ์ง๋์ ํ ๋๋ ์ด์ line ๋ฐฐ์ด์ ๋ณต์ฌํด์ lineCheck ๋ฉ์๋๋ก ์ง๋๊ฐ ์ ์๋ ๊ธธ์ธ์ง ํ์ธํ๋ค.
- ๊ฒฝ์ฌ๋ก๋ฅผ ๋์ ๊ณณ์ check ๋ฐฐ์ด์ true๋ก ๋ณ๊ฒฝํ๋ค.
- ์ธ๋ฑ์ค๋ฅผ ํ๋์ฉ ์ฆ๊ฐํด ๊ฐ๋ฉฐ ์ธ์ ์ธ๋ฑ์ค๋ฅผ ๋น๊ตํ๋ค.
- ๋์ด ์ฐจ์ด๊ฐ 1์ ๋์ผ๋ฉด ์ง๋๊ฐ ์ ์์ผ๋ฏ๋ก false๋ฅผ ๋ฐํํ๋ค.
- ๋์ด์ฐจ์ด๊ฐ 1์ด๋ฉด ๊ฒฝ์ฌ๋ก๋ฅผ ๋์ ์ ์๋์ง ํ์ธํ๋ค.
- ์์ชฝ, ๋ค์ชฝ์ ๊ตฌ๋ถํด L๋งํผ ๊ณต๊ฐ์ด ์๋์ง ํ์ธํ๋ค.
- ๋์ ์ ์์ผ๋ฉด false๋ฅผ ๋ฐํํ๋ค.
- ๋์ด๊ฐ ๋ชจ๋ ๊ฐ๊ฑฐ๋, ๊ฒฝ์ฌ๋ก๋ฅผ ์ค์นํด ํด๊ฒฐํ์ผ๋ฉด true๋ฅผ ๋ฐํํ๋ค.
๐ธ end ๐ธ
- ํ์ด๋ ์ด์ด๋ 1์ฐจ์ ๋ฐฐ์ด line์ ๋ณต์ฌํด์ ๊ฒ์ฌํ๋ฏ๋ก์จ ์ค๋ณต ์ฝ๋๋ฅผ ์ค์ผ ์ ์๋๊ฒ ํต์ฌ ์์ด๋์ด์๋ ๊ฒ ๊ฐ๋ค.
728x90
'CodingTest > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
BOJ_13460 : ๊ตฌ์ฌ ํ์ถ 2 (0) | 2023.04.07 |
---|---|
BOJ_16236 : ์๊ธฐ ์์ด (0) | 2023.04.07 |
BOJ_13459 : ๊ตฌ์ฌ ํ์ถ (0) | 2023.04.06 |
BOJ_2239 : ์ค๋์ฟ (0) | 2023.04.06 |
BOJ_17141 : ์ฐ๊ตฌ์ 2 (0) | 2023.04.06 |