[백준 BOJ] 14582번 오늘도 졌다 (C++/cpp)

2022. 8. 19. 15:34PS (Program Solving)/BOJ (백준)

문제 설명

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

 

14582번: 오늘도 졌다

첫 번째 줄에는 9개의 정수가 주어지는데, 오늘 경기에서 울림 제미니스가 1회 초, 2회 초, ..., 9회 초에 낸 득점이 주어진다. 두 번째 줄에도 9개의 정수가 주어지는데, 스타트링크 걸리버스가 1회

www.acmicpc.net

백준 BOJ 14582번 오늘도 졌다 문제 사진1
백준 BOJ 14582번 오늘도 졌다 문제 사진2

 

접근 방법 - 배열을 응용한 연산 문제

백준의 14582번 문제는 배열을 응용하여 해결해야 하는 연산 문제이다.

해당 문제는, 입력받은 스코어들을 통해 프로야구팀 울림 제미니스가 역전패를 했는지 아닌지에 대한 여부를 출력해야 하는 문제이다.

그냥 진 거면 진 거지 뭘 그걸 따지려 들어ㅂㄷㅂㄷ

이 문제의 기본적인 전제는, 어쨌든 울림 제미니스는 어떤 값을 입력받아도 진다는 결과가 나온다는 것이다. (...)

다만 역전패라는 단어를 보다시피, 이 문제의 관건은 울림 제미니스가 단 한 번이라도 이기고 있는 순간이 있었는지에 대한 여부이다.

이 점만 잘 잡아내었다면 이 문제를 해결하는 건 그리 어렵지 않았을 것으로 예상된다.

그럼에도 혹여나 해당 문제를 해결하는 데에 어려움이 있다면, 아래의 설명과 코드를 참고해보길 바란다.

필자는 아래의 순서대로 코드를 작성하여 문제를 해결하였다.

 

코드의 실행 순서

1) 울림 제미니스와 상대편의 각 스코어를 저장할 배열(a, b)을 각각 전역 변수로 선언해둔다.

(a가 울림 제미니스의 스코어, b가 상대편의 스코어이다.)

 

2) 각 스코어(a, b)를 입력받는다.

 

3) 울림 제미니스가 이기고 있는 순간이 있는지에 대한 여부를 저장할 변수 win을 0으로 초기화하여 선언한다.

또한, 울림 제미니스와 상대편의 점수를 저장할 변수 sum1과 sum2를 각각 0으로 초기화하여 선언한다.

(sum1이 울림 제미니스의 스코어 합계, sum2가 상대편의 스코어 합계이다.)

 

4) 반복문을 통해 점수표를 탐색하며 아래의 연산을 취한다.

- sum1에 a의 현재 탐색값을 더한다.

- 만일 현재 sum1이 sum2보다 크다면, 울림 제미니스가 이기고 있는 상황이다. 이 경우엔 win에 1을 추가한 뒤 해당 반복문을 종료한다.

(win이 한 번이라도 증가했다면 이는 역전패를 했다고 확정이 난 것이다. 따라서 더 이상 반복문을 수행할 필요가 없다.)

- 반복문이 종료되지 않았다면, sum2에 b의 현재 탐색값을 더한 뒤 다음 순서의 반복문을 수행한다.

 

5) win이 0보다 크다면, 이는 역전패를 한 것이다. 따라서 이 경우엔, "Yes"을 출력한다.

다만 win이 0이라면, 이는 역전패가 아닌 것이다. 따라서 이 경우엔, "No"를 출력한다.

 

6) 출력이 완료되었다면, 실행 종료한다.

반응형

 

성공한 코드

#define _CRT_SECURE_NO_WARNINGS
#pragma warning(disable: 4996)
#include <iostream>
#define endl '\n'
using namespace std;

//백준 14582번 코드
int a[9];
int b[9];
int main() {
	ios::sync_with_stdio(false);
	cin.tie(NULL);	cout.tie(NULL);

	for (int i = 0; i < 9; i++) {
		cin >> a[i];
	}
	for (int i = 0; i < 9; i++) {
		cin >> b[i];
	}

	int win = 0;
	int sum1 = 0;
	int sum2 = 0;
	for (int i = 0; i < 9; i++) {
		sum1 += a[i];	
		if (sum1 > sum2) { win++; break; }
		sum2 += b[i];
	}
	if (win > 0) { cout << "Yes" << endl; }
	else { cout << "No" << endl; }
}

 

제출 결과

백준 BOJ 14582번 오늘도 졌다 문제 C++ 제출 결과

(2022.05.03 백준 14582번 문제 제출 결과)

반응형