umilove98의 블로그

백준 1388 Java 본문

algorithm/백준

백준 1388 Java

umilove98 2021. 8. 2. 15:57
반응형

n, m 크기의 2차원 배열에 나무판자를 전부 입력받는다.

2중 for문으로 0,0부터 n-1,m-1까지 배열을 순회

현재 위치가 -일 경우 n,m-1이 같은 - 였다면 같은 모양이 좌우로 이어져 있으므로 나무 판자의 수가 추가되지 않는다.

현재 위치가 |일 경우 n-1,m이 같은 | 였다면 같은 모양이 위아래로 이어져 있으므로 나무 판자의 수가 추가되지 않는다.

단, -일 경우 m이 0이면 m-1은 존재하지 않으므로 판단할 수 없다. | 일 경우 n이 0이면 n-1은 존재하지 않으므로 판단할 수 없다.

위의 경우에 해당하지 않을 때는 출력할 나무 판자의 개수를 1 더한다.

 

 

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
32
33
34
35
36
37
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
 
public class Q1388 {
 
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer nm = new StringTokenizer(br.readLine());
        int n = Integer.parseInt(nm.nextToken());
        int m = Integer.parseInt(nm.nextToken());
        int result = 0;
        char[][] room = new char[n][m];    // 방 크기의 2차원 배열 생성
        
        for(int i = 0; i < n; i++) {    // 방 크기의 2차원 배열에 나무판자 입력
            String s = br.readLine();
            for(int j = 0; j < m; j++) {
                room[i][j] = s.charAt(j);
            }
        }
        
        for(int i = 0; i < n; i++) {
            for(int j = 0; j < m; j++) {
                if(i != 0 && room[i][j] == '|' && room[i - 1][j] == '|') {    // |가 위아래로 이어져 있으면 한개로 계산하므로 총 개수를 더해주지 않는다.
                    continue;
                }else if(j != 0 && room[i][j] == '-' &&room[i][j - 1== '-') {    // -가 좌우로 이어져 있으면 한개로 계산하므로 총 개수를 더해주지 않는다.
                    continue;
                }
                result++;
            }
        }
        System.out.println(result);
        
    }
 
}
cs
반응형

'algorithm > 백준' 카테고리의 다른 글

백준 1205 Java 자바  (0) 2021.08.03
백준 1284 Java 자바  (0) 2021.08.03
백준 1267 Java  (0) 2021.08.02
백준 1380 Java  (0) 2021.07.31
백준 1247 Java  (0) 2021.07.30