[백준(BOJ)] 임스와 함께하는 미니게임(25757번)_C++
2024. 3. 17. 20:34ㆍProblem Solving/Algorithm & Data Structure
728x90
반응형
SMALL
문제만 보면 쉬워보이는 문제다.
실제로 어렵지는 않은 문제지만, 무작정 코드를 작성하기 보다는 어떤 자료구조를 사용해서 설계할 것인지 미리 생각해보고 프로그래밍하는 것을 추천한다.
나도 무작정 코드를 작성하기 시작했다가 set과 map 중 어떤 것을 사용해야할지 계속 고민하면서 수정했다.
문제를 간단하게 요약하면 플레이어의 중복은 허용하지 않으며 지정된 플레이어 수를 만족하면 게임을 시행할 수 있다.
그러면 우리가 해야할 것은
-중복 체크
-플레이하는 플레이어 수 체크
이 두가지이다.
플레이어 한명씩 입력받으면서 해당 사람이 중복된 사람인지 체크했다.
만약 중복이 아니라면 다음에 중복을 체크하기 위해 set에 insert하고,
플레이가능한 사람의 수인 cnt를 1증가시켰다.
이때 cnt+1(임스)가 플레이가능한 인원수 num과 같은 값이라면 게임을 할 수 있으므로
게임 시행 횟수인 answer을 1증가시키고, cnt를 0으로 초기화한다.
자료구조를 활용하여 문제를 풀 때는 정확히 어떤 자료구조를 어떤 목적으로 사용할지를 명확히 정해두는 것이 중요한 것 같다.
정답 코드
#include <iostream>
#include <set>
using namespace std;
int n, num, cnt, answer;
char game;
set<string> player;
int main(){
cin.tie(NULL);
cout.tie(NULL);
ios_base::sync_with_stdio(false);
cin >> n >> game;
if (game == 'Y') num = 2;
else if (game == 'F') num = 3;
else num = 4;
for (int i = 0; i < n; i++){
string s;
cin >> s;
if (player.find(s) == player.end()){
player.insert(s);
cnt++;
if (cnt + 1== num){
answer++;
cnt = 0;
}
}
}
cout << answer;
}728x90
반응형
LIST
'Problem Solving > Algorithm & Data Structure' 카테고리의 다른 글
| [백준(BOJ)] 모노톤길(11067번)_C++ (1) | 2023.09.11 |
|---|---|
| [백준(BOJ)] Strongly Connected Component(2150번)_C++ (0) | 2023.05.06 |
| [백준(BOJ)] 공장(7578번)_C++ (0) | 2023.04.28 |
| [백준(BOJ)] 이중 우선순위 큐(7662번)_C++ (0) | 2023.04.06 |
| [백준(BOJ)] 최소 힙(1927번)_C++ (0) | 2023.04.04 |