코딩테스트/백준
[Java] 백준 - 1236번 성 지키기
배똥회장
2022. 8. 3. 11:01
728x90
코딩 테스트 풀이 체크리스트 |
|
2시간 내에 풀었는가? | O |
본인의 실력으로 풀었는가? | O |
1236번: 성 지키기
첫째 줄에 성의 세로 크기 N과 가로 크기 M이 주어진다. N과 M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 성의 상태가 주어진다. 성의 상태는 .은 빈칸, X는 경비원이 있는 칸이다
www.acmicpc.net
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
//입력 첫 줄은 행과 열을 나타내는 숫자
String[] rc = br.readLine().split(" ");
int r = Integer.parseInt(rc[0]);
int c = Integer.parseInt(rc[1]);
//그 다음 줄 부터는 성의 상태
String[][] map = new String[r][c];
//출력을 위해 체크용.
//행에 배치해야할 경비 수와 열에 배치해야할 경비 수
int rCount = 0;
int cCount = 0;
//열은 바로바로 체크가 안되니까 한 줄씩 비어있는지 아닌지를 파악하기 위해 boolean 배열
boolean[] cCheck = new boolean[c];
//한 줄 씩 입력 받으면서 해당 행에 경비가 있는지 => 없으면 rCount +1
//해당 열에 경비가 있으면 cCheck 상태 바꾸기
for (int i = 0; i < r; i++) {
map[i] = br.readLine().split("");
boolean value = false;
for (int j = 0; j < c; j++) {
if (map[i][j].equals("X")) {
if (!value) value = true;
if (!cCheck[j]) cCheck[j] = true;
}
}
if (!value) rCount++;
}
//cCheck를 돌면서 빈 경비 개수 세기
for (int i = 0; i < c; i++) {
if (!cCheck[i]) cCount++;
}
//rCount와 cCount 중 큰 숫자 리턴
System.out.println(Math.max(rCount, cCount));
}
}
문제 | 결과 | 메모리 | 시간 | 코드 길이 |
1236 | 맞았습니다!! | 14652 KB | 140 ms | 797 B |
728x90