문제(출처: https://www.acmicpc.net/problem/2508)
< 사탕 박사 고창영 >
문제 풀이
행렬을 살펴보며
>ㅇ<
v
ㅇ
^
두 가지 경우를 찾는다.
my solution (Java)
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
public class _2508_ { // 사탕 박사 고창영
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st;
int t = Integer.parseInt(bf.readLine());
for (int k = 0; k < t; k++) {
bf.readLine();
st = new StringTokenizer(bf.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 str = bf.readLine();
for (int j = 0; j < c; j++) {
arr[i][j] = str.charAt(j);
}
}
int answer = 0;
for (int i = 0; i < r; i++) {
int idx = 0;
while (idx < c) {
if (arr[i][idx] == '>' && idx + 1 < c && arr[i][idx + 1] == 'o' && idx + 2 < c
&& arr[i][idx + 2] == '<') {
answer += 1;
idx += 3;
} else if (arr[i][idx] == 'v' && i + 1 < r && arr[i + 1][idx] == 'o' && i + 2 < r
&& arr[i + 2][idx] == '^') {
answer += 1;
idx += 1;
} else {
idx += 1;
}
}
}
bw.write(answer + "\n");
}
bw.flush();
}
}
변수)
t : 테스트 케이스 개수
r, c : 행, 열
arr : 행렬 정보
answer : 사탕의 개수
테스트 케이스 개수를 입력받는다. 테스트 케이스 수만큼 다음 과정을 반복한다.
1) 행, 열 입력
2) 행렬 정보 입력받아 arr에 저장
3) 행렬 탐색하며 사탕 찾기
4) 사탕 개수 출력
'🌞Algorithm > 🔥Baekjoon' 카테고리의 다른 글
[Baekjoon] 1254_팰린드롬 만들기 (0) | 2024.08.07 |
---|---|
[Baekjoon] 2304_창고 다각형 (0) | 2024.08.05 |
[Baekjoon] 4921_나무 블록 (0) | 2024.08.01 |
[Baekjoon] 5619_세 번째 (0) | 2024.07.30 |
[Baekjoon] 10799_쇠막대기 (0) | 2024.07.26 |