본문 바로가기
PS/BOJ

[자바] 백준 2508 - 사탕 박사 고창영 (boj java)

by Nahwasa 2022. 5. 19.

문제 : boj2508

 

  brute force로 모든 칸을 확인만 하면 된다. 'o'를 기준으로 상하좌우로 확인해도 되고, 이하 코드처럼 '<'를 기준으로 좌측으로 2칸, '^'를 기준으로 위로 2칸을 확인하는 방식도 상관없다. 확인만 잘 하면 되서 반복문만 잘 사용하면 풀 수 있다.

 

코드 : github

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
    private void solution() throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int t = Integer.parseInt(br.readLine());
        StringBuilder sb = new StringBuilder();
        while (t-->0) {
            br.readLine();
            StringTokenizer st = new StringTokenizer(br.readLine());
            int r = Integer.parseInt(st.nextToken());
            int c = Integer.parseInt(st.nextToken());
            char[][] arr = new char[r][c];
            for (int i = 0; i < r; i++) {
                String s = br.readLine();
                for (int j = 0; j < c; j++) {
                    arr[i][j] = s.charAt(j);
                }
            }
            int cnt = 0;
            for (int i = 0; i < r; i++) {
                for (int j = 2; j < c; j++) {
                    if (arr[i][j] != '<') continue;
                    if (arr[i][j-1] == 'o' && arr[i][j-2] == '>') cnt++;
                }
            }
            for (int i = 2; i < r; i++) {
                for (int j = 0; j < c; j++) {
                    if (arr[i][j] != '^') continue;
                    if (arr[i-1][j] == 'o' && arr[i-2][j] == 'v') cnt++;
                }
            }
            sb.append(cnt).append('\n');
        }
        System.out.print(sb);
    }

    public static void main(String[] args) throws Exception {
        new Main().solution();
    }
}

댓글