※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 11916번 문제인 볼질이다.
문제는 아래 링크를 확인하자.

https://www.acmicpc.net/problem/11916 

 

11916번: 볼질

5월 5일 ‘방긋 스마일스’와의 어린이날 프로야구 경기에서 ‘GA 아인타즈’의 감독 성균이는 테스트 겸으로 창석이를 선발 투수로 등판시켰다. 그러나 창석이는 스트라이크를 못 던지는 치명

www.acmicpc.net

 

창석이가 공을 하나 던질 때마다 경기가 어떻게 진행되는지를 직접 시뮬레이션하는 코드를 작성해 문제를 해결하자.

 

이 시뮬레이션의 구현을 위해 1루, 2루 및 3루에 주자가 있는지를 저장해둘 변수, 현재 누적되어 있는 '볼'의 개수를 저장할 변수 및 지금까지 실점한 점수를 기록할 변수를 만들자. 그리고 지문에 주어진 규칙에 맞추어 위 변수들을 적절히 변경해 문제를 해결하자.

 

폭투를 던지면서 총 '볼'의 개수가 4개가 되었을 때 일어나는 상황을 유의해 구현하자.

 

아래는 제출한 소스코드이다.

#include <iostream>
using namespace std;

int Q;
int base1, base2, base3;
int cnt, ans;

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);

	cin >> Q;
	while (Q--) {
		int x; cin >> x;
		if (x == 1) cnt++;
		else if (x == 2) cnt = 4;
		else {
			cnt++;
			if (base3) base3 = 0, ans++;
			if (base2) base2 = 0, base3 = 1;
			if (base1) base1 = 0, base2 = 1;
		}
		if (cnt == 4) {
			cnt = 0;
			if (base1) {
				if (base2) {
					if (base3) {
						base3 = 0, ans++;
					}
					base2 = 0, base3 = 1;
				}
				base1 = 0, base2 = 1;
			}
			base1 = 1;
		}
	}

	cout << ans;
}
728x90

+ Recent posts