문제 : 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();
}
}
'PS > BOJ' 카테고리의 다른 글
[자바] 백준 1897 - 토달기 (boj java) (0) | 2022.05.20 |
---|---|
[자바] 백준 1010 - 다리 놓기 (boj java) (0) | 2022.05.20 |
[자바] 백준 24479 - 알고리즘 수업 - 깊이 우선 탐색 1 (boj java) (0) | 2022.05.18 |
[자바] 백준 1115 - 순열 (boj java) (0) | 2022.05.17 |
[자바] 백준 25200 - 곰곰이와 자판기 (boj java) (0) | 2022.05.16 |
댓글