c++

백준 c++ 14724 문제 풀이

psb08 2025. 5. 1. 00:05
728x90

문제 링크 : https://www.acmicpc.net/problem/14724

목차

1. 설명

 

2. 내 코드

 

3. 문제 풀이 해석 내용

 

4. 실행 결과

 

설명

백준 브론즈 2 문제 입니다.

문제명 : 관리자는 누구?

 

내 코드

#include<iostream>
#include<vector>
#include<string>
#include<algorithm>
using namespace std;


int main()
{
    ios::sync_with_stdio(false);
    cin.tie(NULL);
    std::cout.tie(NULL);

    int n;
    cin >> n;

    string clubs[9] = 
    {
        "PROBRAIN", "GROW", "ARGOS", "ADMIN", "ANT",
        "MOTION", "SPG", "COMON", "ALMIGHTY"
    };

    int max_score = -1;
    int max_index = -1;

    for (int i = 0; i < 9; ++i) 
    {
        int club_max = -1;
        for (int j = 0; j < n; ++j) 
        {
            int score;
            cin >> score;
            club_max = max(club_max, score);
        }
        if (club_max > max_score) 
        {
            max_score = club_max;
            max_index = i;
        }
    }

    cout << clubs[max_index] << '\n';

}

 

문제 풀이 해석 내용

 

각 클럽의 점수 개수 입력

int n;
cin >> n;

int n; cin >> n;: 각 클럽마다 몇 개의 점수가 주어지는지를 나타내는 정수 n을 입력받습니다.

 

 

클럽 이름 배열

string clubs[9] =
{
    "PROBRAIN", "GROW", "ARGOS", "ADMIN", "ANT",
    "MOTION", "SPG", "COMON", "ALMIGHTY"
};

9개의 클럽 이름이 저장된 문자열 배열 clubs를 선언하고 초기화합니다.

 

 

최대 점수 및 해당 클럽 인덱스 초기화

int max_score = -1;
int max_index = -1;

max_score: 전체 클럽 중 가장 높은 최고 점수를 저장할 변수입니다. 

초기값은 어떤 점수보다도 작은 -1로 설정합니다.
max_index: max_score를 가진 클럽의 clubs 배열 내 인덱스를 저장할 변수입니다. 

초기값은 -1로 설정합니다.

 

 

클럽별 최고 점수 탐색 및 전체 최고 점수 업데이트

for (int i = 0; i < 9; ++i) // 9개의 클럽에 대해 반복
{
    int club_max = -1; // 현재 클럽의 최고 점수 초기화
    for (int j = 0; j < n; ++j) // 각 클럽의 n개 점수에 대해 반복
    {
        int score;
        cin >> score; // 점수 입력받기
        club_max = max(club_max, score); // 현재 클럽의 최고 점수 업데이트
    }
    if (club_max > max_score) // 현재 클럽의 최고 점수가 전체 최고 점수보다 높으면
    {
        max_score = club_max; // 전체 최고 점수 업데이트
        max_index = i; // 전체 최고 점수를 가진 클럽의 인덱스 저장
    }
}

바깥쪽 for 루프는 9개의 각 클럽에 대해 반복합니다.
안쪽 for 루프는 현재 클럽의 n개의 점수를 입력받습니다.
club_max = max(club_max, score);: std::max 함수를 사용하여 현재 입력받은 score와 현재까지의 club_max 중 더 큰 값을 club_max에 저장합니다. 이 과정을 통해 현재 클럽의 최고 점수를 찾습니다.
안쪽 루프가 끝나면 현재 클럽의 최고 점수(club_max)를 전체 최고 점수(max_score)와 비교합니다.
만약 club_max가 max_score보다 크면, max_score를 club_max로 업데이트하고, max_index에 현재 클럽의 인덱스 i를 저장합니다.

 

 

결과 출력

cout << clubs[max_index] << '\n';

모든 클럽을 처리한 후, max_index에 저장된 인덱스를 사용하여 clubs 배열에서 가장 높은 최고 점수를 가진 클럽의 이름을 출력합니다. '\n'을 사용하여 줄바꿈을 합니다.

 

 

실행 결과

 

728x90

'c++' 카테고리의 다른 글

백준 c++ 18258 문제 풀이  (0) 2025.05.08
백준 c++ 9012 문제 풀이  (0) 2025.05.07
백준 c++ 20053 문제 풀이  (0) 2025.04.30
백준 c++ 5524 문제 풀이  (0) 2025.04.29
백준 c++ 1009 문제 풀이  (0) 2025.04.22