반응형
https://www.acmicpc.net/problem/1652
풀이
dfs, bfs 문제처럼 보이지만 쉽게 풀 수 있는 문제이다.
문제의 조건은 아래와 같다.
1. 2칸 이상의 빈 칸이 있으면 누울 수 있다.
2. 반드시 벽이나 짐에 닿게 된다.
이중 for문을 돌리면서 가로, 세로에 연속 2칸이 비어있으면 cnt++을 해준 후에 break; 문으로 for문을 빠져나왔다.
하지만 이렇게 하니까 예외 상황이 하나 생겼다.
바로 한 줄에 2개의 자리가 생길 수 있다는 점이다. 이 상황만 신경써서 코드를 구현한다면 큰 어려움없이 해결할 수 있다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
char[][] map = new char[N][N];
for (int i=0; i<N; i++) {
String str = br.readLine();
for (int j=0; j<N; j++) {
map[i][j] = str.charAt(j);
}
}
int x_cnt = 0;
int y_cnt = 0;
int x_tmp = 0;
int y_tmp = 0;
for (int i=0; i<N; i++) {
for (int j=0; j<N; j++) {
if (map[i][j] == '.') {
x_tmp++;
if (x_tmp == 2) x_cnt++;
} else {
x_tmp = 0;
}
}
x_tmp = 0;
}
for (int i=0; i<N; i++) {
for (int j=0; j<N; j++) {
if (map[j][i] == '.') {
y_tmp++;
if (y_tmp == 2) y_cnt++;
} else {
y_tmp = 0;
}
}
y_tmp = 0;
}
System.out.println(x_cnt + " " + y_cnt);
}
}
반응형
'알고리즘 > 구현 & 그리디 & 브루트포스' 카테고리의 다른 글
[백준]JAVA - 1052번: 물병 (0) | 2022.10.08 |
---|---|
[백준]JAVA - 1002번: 터렛 (0) | 2022.09.28 |
[백준]JAVA - 1085번: 직사각형에서 탈출 (0) | 2022.09.26 |
[백준]JAVA - 1475번: 방 번호 (0) | 2022.09.22 |
[백준]JAVA - 1018번: 체스판 다시 칠하기 (0) | 2022.09.20 |