[백준 BOJ] 5523번 경기 결과 (C++/cpp)

2024. 2. 11. 01:07PS (Program Solving)/BOJ (백준)

문제 설명

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

 

5523번: 경기 결과

A와 B가 게임을 한다. 게임은 N번의 라운드로 이루어져 있다. 각 라운드에서는, 더 많은 점수를 얻은 사람이 그 라운드의 승자가 된다. 즉, A의 점수가 B의 점수보다 크면 i번째 라운드는 A의 승리

www.acmicpc.net

백준 BOJ 5523번 경기 결과 문제 사진1
백준 BOJ 5523번 경기 결과 문제 사진2

 

접근 방법 - 비교 연산을 활용한 수학 문제

백준의 5523번 문제는 두 숫자 간 크기의 비교 연산을 주요로 다루어서 해결해야 하는 문제이다.

해당 문제는, A와 B가 여러 라운드에 걸쳐 경기를 진행하였을 때 A와 B가 각각 우승한 횟수를 구하여 정답으로 출력해야 하는 문제이다.

경기를 수행한 횟수의 크기만큼, 각 입력으로 주어지는 두 점수를 비교하여 높은 점수를 취한 사람의 승리 횟수에 1을 더하는 식으로 문제를 해결하면 된다.

아주 간단한 원리를 이용하면 되기 때문에, 알고리즘 문제를 여럿 풀어보았다면 아주 쉽게 해결할 수 있었을 것이다.

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

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

 

코드의 실행 순서

1) 라운드의 수(n)를 입력받는다.

 

2) A와 B가 각각 승리한 라운드의 수를 저장할 변수 a, b를 각각 0으로 초기화하여 선언한다.

 

3) n의 크기만큼, 반복문을 수행하여 아래의 연산을 취하도록 한다.

  • 해당 라운드에서 A와 B가 각각 취한 점수(s1, s2)를 입력받는다.
  • 만일 s1이 더 크다면 A가 승리하였기 때문에 a에 1을 추가, s2가 더 크다면 B가 승리하였기 때문에 b에 1을 추가하도록 한다.

 

4) 3)의 연산이 모두 끝났다면, 현재 저장되어 있는 a와 b의 값을 순차적으로 출력한 뒤 실행 종료한다.

반응형

 

성공한 코드

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

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

    int a = 0, b = 0;
    for (int i = 0; i < n; i++) {
        int s1, s2;
        cin >> s1 >> s2;
        if (s1 < s2) { b++; }
        else if (s1 > s2) { a++; }
    }
    cout << a << " " << b << endl;
}

 

제출 결과

백준 BOJ 5523번 경기 결과 문제 C++ 제출 결과

(2023.06.08 백준 5523번 문제 제출 결과)

반응형