문제
프로야구팀 울림 제미니스는 오늘도 졌다. 이번에는 스타트링크 걸리버스의 4번타자가 끝내기 홈런을 쳐서 졌다. 울림 제미니스의 열렬한 팬인 지수는 속으로 화를 참으며 어떤 선수 때문에 졌는지 생각해보았다. 지수는 팀이 역전패를 했다면 불펜 투수의 책임이고, 그렇지 않다면 타자와 선발 투수의 책임이라고 생각했다.
지수는 오늘 경기에서 울림이 어떻게 졌는지 생각해보려 했지만, 기분이 너무 더러워서 뭘 할 의욕이 나지 않았다. 지수를 도와 오늘 경기에서 울림 제미니스가 역전패를 했는지 구하는 프로그램을 작성하여라. 역전패가 성립하려면 경기 도중 울림 제미니스가 이기고 있는 순간이 있어야 한다.
입력
첫 번째 줄에는 9개의 정수가 주어지는데, 오늘 경기에서 울림 제미니스가 1회 초, 2회 초, ..., 9회 초에 낸 득점이 주어진다.
두 번째 줄에도 9개의 정수가 주어지는데, 스타트링크 걸리버스가 1회 말, 2회 말, ..., 9회 말에 낸 득점이 주어진다.
한 팀이 한 회에 낸 득점은 모두 0 이상 20 이하이며, 스타트링크 걸리버스의 총 득점이 울림 제미니스의 총 득점보다 많다.
경기는 1회 초->1회 말->2회 초->...->9회 초->9회 말 순서로 진행된다.
출력
만약 울림 제미니스가 역전패를 했다면 'Yes'를 출력한다.
그렇지 않으면 'No'를 출력한다.
소스 코드
#include <iostream>
using namespace std;
int main() {
int jem[9], gul[9];
for ( int i = 0; i < 9; i++ ) cin >> jem[i];
for ( int i = 0; i < 9; i++ ) cin >> gul[i];
int cnt = 0;
for ( int i = 0; i < 9; i++ )
{
if ( jem[0] > 0 )
{
cnt++;
break;
}
if ( i != 0 && ( jem[i] > gul[i - 1]) )
{
cnt++;
break;
}
if ( i != 8 )
{
jem[i + 1] += jem[i];
gul[i + 1] += gul[i];
}
}
if ( cnt != 0 ) cout << "Yes";
else cout << "No";
}
문제 풀이
1. 제미니스와 걸리버스가 1 ~ 9회까지 낸 점수를 입력받는다. ( jem[9], gul[9] )
2. 문제 조건에 의해 역전하는 경우를 고려하면
(1) 1회 초에 제미니스가 1점이라도 내는 경우( jem[0] > 0 )
(2) n이 1이 아닐 때, n회 초까지 제미니스가 낸 점수가 n - 1회 말까지 걸리버스가 낸 점수가 더 큰 경우
이렇게 두 가지 경우가 있다. 따라서 cnt를 역전을 한 적이 있는지, 없는지를 결정하는 상수로 잡았을 때, 각 경우가 생기게 되면 cnt가 증가하고, 반복문을 종료한다.
3. cnt의 값에 따라 역전한 적이 있다면 "Yes", 없다면 "No"를 출력하고 종료한다.
'Koala - 13기 > 기초 알고리즘 스터디' 카테고리의 다른 글
[백준/Python]14910 오르막 (0) | 2024.01.28 |
---|---|
[백준/Python]10824:네 수 (0) | 2024.01.21 |
[백준/C++] 9226: 도깨비 (0) | 2024.01.21 |
[백준/C++] 9012: 괄호 (0) | 2024.01.21 |
[백준/python] 1673번 치킨쿠폰 (0) | 2024.01.21 |