-
[Baekjoon(백준)][1159번] 농구 경기(C++)2024년 01월 24일
- 유니얼
-
작성자
-
2024.01.24.:36
728x90안녕하세요! 오늘은 코딩테스트 문제 중 하나인 "농구 경기" 문제를 해결하는 방법에 대해 설명하려고 합니다. "농구 경기" 문제는 주어진 선수들의 목록에서 성의 첫 글자가 같은 선수가 5명 이상일 경우 그 첫 글자를 모두 출력하는 문제입니다. 문제를 해결하는 과정과 코드를 자세히 알아보겠습니다.
문제링크:
https://www.acmicpc.net/problem/1159
문제 개요
"농구 경기" 문제는 주어진 선수들의 목록에서 성의 첫 글자가 같은 선수가 5명 이상일 경우 그 첫 글자를 모두 출력하는 문제입니다. 선수의 수는 최대 150명이며, 선수의 성은 소문자 알파벳으로 이루어져 있습니다.
해결 방법
이 문제는 선수들의 성의 첫 글자를 카운트하고, 그 카운트가 5 이상인 첫 글자를 찾아 출력하는 방법으로 해결합니다. 이를 위해 C++의 map과 vector를 사용하여 각 알파벳의 출현 횟수를 계산하고, 5 이상인 알파벳을 저장한 다음 출력합니다.
코드 구현
#include <iostream> #include <vector> #include <map> #include <algorithm> using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int playerCount = 0; cin >> playerCount; vector<string> players(playerCount,""); // 선수 이름 입력 for (int i = 0; i < playerCount; i++) { cin >> players[i]; } map<char, int> tables; // 각 알파벳의 출현 횟수를 저장 vector<char> ret; // 5번 이상 출현한 알파벳을 저장 // 각 선수의 성의 첫 글자 카운트 for (int i = 0; i < players.size(); i++) { tables[players[i][0]] += 1; if (tables[players[i][0]] == 5) { ret.push_back(players[i][0]); } } // 5번 이상 출현한 알파벳이 없는 경우 if (ret.size() <= 0) { cout << "PREDAJA"; } else { sort(ret.begin(), ret.end()); // 알파벳 순으로 정렬 for (auto seo : ret) { cout << seo; // 결과 출력 } } return 0; }
코드 설명
이 코드는 각 선수의 성의 첫 글자를 카운트하고, 이 카운트가 5 이상이 되는 알파벳을 ret 벡터에 저장합니다. 모든 선수를 검사한 후, ret 벡터에 저장된 알파벳이 없으면 "PREDAJA"를 출력하고, 있으면 이를 사전순으로 정렬하여 출력합니다.
결론
"농구 경기" 문제는 문자열 처리와 자료구조를 활용하여 간단히 해결할 수 있으며, 주어진 조건에 따라 데이터를 필터링하고 처리하는 능력을 평가합니다.
반응형다음글이전글이전 글이 없습니다.댓글
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드
받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이
감지되어도 모달 창이 표시되지 않습니다.)