[Algorithm/Java] 백준 1652번 - 누울 자리를 찾아라
https://www.acmicpc.net/problem/1652
🔍 문제 풀이
문제 도식화
고려해야할 조건
X
를 만났을 때.
개수를 세다X
를 만났을 때 빈 공간(.)의 덩어리가 끝났으므로, 그 길이가 2 이상인지 확인
- 배열의 끝에 도달했을 때
- ‘X’를 만나지 않고 행 또는 열이 끝나는 경우가 있음 (마지막 행·열이
arr[i][j] == '.'
일 경우) - 따라서 마지막에 남아 있는 빈 공간의 길이가 2 이상인지 확인 필요
- ‘X’를 만나지 않고 행 또는 열이 끝나는 경우가 있음 (마지막 행·열이
💻 코드
전체 코드
import java.io.*;
public class Main {
static int[][] arr;
static int n;
static int colAns = 0, rowAns = 0;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
n = Integer.parseInt(br.readLine());
arr = new int[n][n];
for(int i=0; i<n; i++){
String line = br.readLine();
for(int j=0; j<n; j++){
arr[i][j] = line.charAt(j);
}
}
solve();
System.out.println(rowAns + " " + colAns);
}
static void solve(){
// 행 체크
for(int i=0; i<n; i++){
int rowCnt = 0;
for(int j=0; j<n; j++){
if(arr[i][j] == '.') {
rowCnt++;
}else if(arr[i][j] == 'X'){
if(rowCnt >=2) rowAns ++;
rowCnt = 0;
}
}
if(rowCnt >= 2) rowAns++; // 행의 끝 확인
}
// 열 체크
for(int i=0; i<n; i++){
int colCnt = 0;
for(int j=0; j<n; j++){
if(arr[j][i] == '.') {
colCnt++;
}else if(arr[j][i] == 'X'){
if(colCnt >=2) colAns ++;
colCnt = 0;
}
}
if(colCnt >= 2) colAns++; // 열의 끝 확인
}
}
}
댓글남기기