[백준 BOJ] 16727번 ICPC (C++/cpp)

2023. 8. 31. 00:28PS (Program Solving)/BOJ (백준)

문제 설명

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

 

16727번: ICPC

The first line of the input contains two space-separated integers p1 and s1, where p1 and s1 are the number of goals scored by Persepolis and Esteghlal, respectively, in the first match in which Persepolis is the home team. The second line contains two spa

www.acmicpc.net

백준 BOJ 16727번 ICPC 문제 사진1
백준 BOJ 16727번 ICPC 문제 사진2

 

접근 방법 - 기초적인 사칙연산 문제

백준의 16727번 문제는 기초적인 사칙연산을 코드로 구현하여 해결해야 하는 문제이다.

해당 문제는, 진행된 경기의 점수에 기반하여 경기의 결과를 출력하면 되는 문제이다.

(이 문제의 지문은 모두 영문으로 작성되어 있기 때문에, 필자는 질문 게시판의 번역본을 참고하며 문제를 해결하였다.)

이때 주의해야 할 점이, 입력으로 주어지는 점수판 형식이 경기가 진행되는 장소마다 변동되기(?) 때문에 문제의 지문을 잘 살펴야 한다.

첫 번째 입력이 [p팀점수]:[s팀점수]라면, 두 번째 입력이 [s팀점수]:[p팀점수] 식으로... 틀릴 수도 있는데 아무튼 이런 형식

단순 사칙연산 및 비교 문제이기 때문에, 위의 부분만 잘 유의한다면 쉽게 문제를 해결할 수 있을 것이다.

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

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

 

코드의 실행 순서

1) 2쌍의 경기 점수를 입력받는다.

(필자의 경우엔, 첫 번째 경기는 p1:s1으로, 두 번째 경기는 s2:p2로 입력받게끔 하였다.)

 

2) p팀의 총점수와 s팀의 총점수를 저장하는 변수 p, s를 각각 선언하여 아래처럼 초기화한다.

- p = p1(첫 번째 경기의 p팀 득점수) + p2(두 번째 경기의 p팀 득점수)

- s = s1(첫 번째 경기의 s팀 득점수) + s2(두 번째 경기의 s팀 득점수)

 

3) 연산이 완료된 p와 s의 값을 비교하여, 아래처럼 출력하게끔 한다.

- p가 s보다 더 큰 값을 갖고 있다면, 문제에서 제시하는 대로 "Persepolis"를 출력한다.

- 반대로 s가 p보다 더 큰 값을 갖고 있다면, 문제에서 제시하는 대로 "Esteghlal"를 출력한다.

- 다만 p와 s의 값이 동일하다면, 원정에서 넣은 득점수에 따라 승패를 가려야 한다.

필자가 작성한 코드에선, 비교해야 할 값이 각각 p2와 s1이 된다.

p2가 s1보다 더 큰 값을 가진다면 "Persepolis"를, 반대로 s1이 p2보다 더 큰 값을 가진다면 "Esteghlal"를 출력한다.

다만 여기에서도 2개 변수가 같은 값을 가진다면 "Penalty"를 출력하도록 한다.

 

4) 출력을 모두 수행하였다면, 실행을 종료한다.

반응형

 

성공한 코드

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

//백준 16727번 코드
int main() {
	ios::sync_with_stdio(false);
	cin.tie(NULL);   cout.tie(NULL);

	int p1, p2, s1, s2;
	cin >> p1 >> s1 >> s2 >> p2;

	int p = p1 + p2;
	int s = s1 + s2;
	if (p == s) {
		if (p2 < s1) {
			cout << "Esteghlal" << endl;
		}
		else if (p2 > s1) {
			cout << "Persepolis" << endl;
		}
		else {
			cout << "Penalty" << endl;
		}
	}
	else if (p < s) {
		cout << "Esteghlal" << endl;
	}
	else {
		cout << "Persepolis" << endl;
	}
}

 

제출 결과

백준 BOJ 16727번 ICPC 문제 C++ 제출 결과

(2023.05.23 백준 16727번 문제 제출 결과)

반응형