문제
풀이
세로길이 n, 가로길이 m 인 방에 다음 두 가지 판자를 깐다. (n,m<=50)
- : 인접해 있고 같은 행에 있다면
| : 인접해 있고 같은 열에 있다면
위 조건을 충족할 경우 두 개는 같은 나무 판자로 친다.
방 바닥을 장식하는데 필요한 나무 판자의 총 개수를 구해야 한다.
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));
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken()); //세로
int m = Integer.parseInt(st.nextToken()); //가로
char tile[][] = new char[n][m];
//2개 이상일 경우 1로 count
int count = 0; //타일 총 개수
for(int i=0; i<n; i++) {
tile[i] = br.readLine().toCharArray(); //타일 배열 초기화
int c = 0;
for(int j=0; j<m; j++) {
if(tile[i][j] == '-') {
if(c==0) count++;
c++; //- 연속 개수 셈
}else {
c = 0; //- 연속 초기화
}
}
}
//가로 세로 바꿔서 본다(세로로 쭉 볼 것임)
for(int i=0; i<m; i++) {
int c = 0;
for(int j=0; j<n; j++) {
if(tile[j][i] == '|') {
if(c==0) count++;
c++; //| 연속 개수 셈
}else {
c = 0; //| 연속 초기화
}
}
}
System.out.println(count);
}
}
'PS(Java) > 백준' 카테고리의 다른 글
[PS] 백준 1158번 요세푸스 (0) | 2022.09.13 |
---|---|
[PS] 백준 1406번 에디터 (다시 풀기) (0) | 2022.07.06 |
[PS] 백준 11655번 ROT13 (0) | 2022.06.03 |
[PS] 백준 10799번 쇠막대기 (0) | 2022.05.30 |
[PS] 백준 10828번 스택 (0) | 2022.05.25 |