728x90
반응형
2024.08.02기준 - 실버4
이미지
백준, BEAKJOON, BOJ, JAVA, 자바
풀이
이 문제는 볼, 데드볼, 폭투만 들어오는 상황에서 몇 점이 나오는지 출력하는 문제입니다.
예제를 통해서 문제를 설명하도록 하겠습니다.
// 예제1
16
1 1 2 1 3 3 1 2 1 1 3 1 1 1 3 3
1. 1(볼)이 2번 들어옵니다.
볼 카운트가 2가 됩니다.
2. 그 다음 2(데드볼)가 들어옵니다.
데드볼이 들어오면서 타자가 1루로 갑니다.
3. 1이 들어와 볼 카운트가 1이 됩니다.
4. 그 다음 3(폭투)이 2번 들어와 1루수가 3루까지 진루하게 되며, 볼 카운트가 2증가합니다.
5. 1(볼)이 들어와 포볼이 되어 타자가 1루로 가게됩니다.
6. 2(데드볼)이 들어 와 1루수가 2루로, 타자가 1루로 가게됩니다.
7. 1(볼)이 2번 들어와 볼 카운트가 2증가합니다.
8. 3(폭투)가 들어 와 볼 카운트는 1증가, 3루가 홈으로 들어오면서 1점 증가 1, 2루가 2, 3루로 진루합니다.
(총 점수 : 1)
9. 1(볼)이 3번 들어와 타자는 1루로 가게 되고, 다음 타자의 볼 카운트가 2증가합니다.
(총 점수 : 1)
10. 3(폭투)가 2번 들어와 2, 3루 선수가 홈으로 들어 와 점수가 2증가하며, 1루가 3루로, 타자가 1루로 진루합니다.
(총 점수 : 3)
11. 총 합계 3을 출력해줍니다.
코드
package Main;
import java.io.*;
import java.util.*;
public class Main {
static boolean one, two, thr;
static int count = 0;
public static void main(String[] args) throws IOException { // 11916
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int n = Integer.parseInt(br.readLine()); // 던진 공의 수
StringTokenizer st = new StringTokenizer(br.readLine());
int ball = 0;
one = false; // 1루 여부
two = false; // 2루 여부
thr = false; // 3루 여부
int num;
while (n-- > 0) {
num = Integer.parseInt(st.nextToken());
if (num == 1) { // 볼
ball++;
if (ball == 4) {
run(0);
ball = 0;
}
} else if (num == 2) { // 몸에 맞는 공
run(0);
ball = 0;
} else { // 폭투
run(1);
ball++;
if (ball == 4) {
run(0);
ball = 0;
}
}
}
bw.write(Long.toString(count));
bw.flush();
bw.close();
br.close();
}
// 볼넷, 데드볼 : 0, 폭투 : 1
// 진루를 할 때 실행하는 함수.
private static void run(int ca) {
if (ca == 0) {
if (one) {
if (two) {
if (thr) {
count++;
} else {
thr = true;
}
} else {
two = true;
}
} else {
one = true;
}
} else {
if (thr) {
count++;
thr = false;
}
if (two) {
thr = true;
two = false;
}
if (one) {
two = true;
one = false;
}
}
}
}
728x90
반응형
'코딩테스트 일기 (BAEKJOON)' 카테고리의 다른 글
BEAKJOON / 백준 - JAVA 14650번 걷다보니 신천역 삼 (Small) (0) | 2024.08.04 |
---|---|
BEAKJOON / 백준 - JAVA 13268번 셔틀런 (0) | 2024.08.03 |
BEAKJOON / 백준 - JAVA 10829번 이진수 변환 (0) | 2024.08.01 |
BEAKJOON / 백준 - JAVA 14429번 배스킨라빈스 31 (0) | 2024.08.01 |
BAEKJOON / 백준 - JAVA 1384번 메시지 (0) | 2024.07.31 |