Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
Tags
- flyway
- CS
- 운영체제
- Spring JPA
- 프로그래머스
- BFS
- 백준
- 프로젝트
- fatch
- 스케일아웃
- findById
- springboot
- 해시
- 외래키제약조건위반
- JPA
- 트리셋
- SpringBatch
- CPU스케줄링
- 그래프탐색
- 코테
- 2178
- 컴퓨터구조
- 임베디드타입
- 구현
- 폰켓몬
- 트리맵
- DB replication
- 산업은행it
- 파이널프로젝트
- 산업은행청년인턴
Archives
- Today
- Total
나 JAVA 봐라
[백준] 1236번 성지키기 본문
- 보통 input에는 공백(" ")으로 구분되어 입력이 들어오는데, 이번에는 공백 없이 들어옴.
- .split("")으로 처리하거나, charAt으로 끊어서 처리하는 방법이 있다.
- 경비원을 가장 적게 배치하려면, 경비원이 필요한 가로-세로가 겹쳐지는 부분에 경비원을 두면 된다. 따라서 경비원이 필요한 행, 열의 갯수를 구한다.
- 만약 경비원이 필요한 행,열이 모두 0이면? -> 추가로 필요한 경비원 없으니까 0 return
- 행, 열 중 하나라도 경비원이 필요하면? -> 행, 열 중 더 큰 수 return
package yejin.song;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.StringTokenizer;
public class BOJ_성지키기 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
char map[][] = new char[N][M];
// 맵 초기화
for(int i = 0; i< N; i++){
//st = new StringTokenizer(br.readLine());
String s = br.readLine();
for (int j = 0; j <M; j++){
map[i][j] = s.charAt(j);
}
}
ArrayList<Integer> hang = new ArrayList<>();
// 경비원 없는 행 찾기 (N 기준 탐색)
for(int i =0; i< N; i++){
for (int j=0; j<M; j++){
if(map[i][j] == 'X'){ // 경비원이 있다면
break;
}
if (j == M-1){ //끝까지 다 돌았는데 경비원 없으면
hang.add(i); //몇번째 행인지 add
}
}
}
ArrayList<Integer> yul = new ArrayList<>();
// 경비원 없는 열 찾기
for(int i =0; i< M; i++){
for (int j=0; j<N; j++){
if(map[j][i] == 'X'){ // 경비원이 있다면
break;
}
if (j == N-1){ //끝까지 다 돌았는데 경비원 없으면
yul.add(i); //몇번째 열인지 add
}
}
}
int hang_size = hang.size();
int yul_size = yul.size();
// 만약 행,열 둘다 empty라면 -> 0
if (hang_size == 0 && yul_size == 0){
System.out.println(0);
return;
} else { // 하나라도 있다면-> 행, 열 중 더 큰 수 return
System.out.println(Math.max(hang_size,yul_size));
return;
}
}
}
'코딩테스트 > 구현' 카테고리의 다른 글
[백준] 1834번 나머지와 몫이 같은 수 (0) | 2024.04.13 |
---|---|
[백준] 1357번 뒤집힌 덧셈 (0) | 2024.04.12 |
[백준] 1292번 쉽게 푸는 문제 (0) | 2024.04.09 |
[백준] 1268번 임시 반장 정하기 (0) | 2024.04.08 |
[백준] 1157번 단어공부 (0) | 2024.03.28 |