문제 요약
3종류의 게임 윷놀이(Y,2인), 같은 그림 찾기(F,3인), 원카드(O,4인) 중 하나의 게임에 대해 여러 대결 신청 정보를 받아 총 대진 수를 구해보자.
(단, 대결을 희망하는 사람은 대진에 단 한 번만 참여할 수 있다.)
풀이 방향
동일한 원소를 여러 개 허용하지 않는 자료구조 set을 활용하여 문제를 해결해 보자.
제출 답안
#include <iostream>
#include <set>
using namespace std;
int main() {
int n,people; char c;
//윷놀이(Y,2), 같은그림찾기(F,3), 원카드(O,4)
cin >> n >> c;
if(c=='Y') people=2-1;
else if(c=='F') people=3-1;
else people=4-1; //'O'
set<string> s;
for(int i=0; i<n; i++) {
string str; cin >> str;
s.insert(str);
}
cout << s.size()/people;
return 0;
}
답안 해설
게임에는 항상 주최자인 임스가 포함된다.
즉, 윷놀이-같은그림찾기-원카드 게임 대진에 필요한 인원을 1-2-3으로 설정하여 리스트를 점검해야 한다.
게임 정원이 채워지지 않으면 게임을 진행할 수 없다.
따라서 int 나눗셈으로 몫만을 구해주었다.
번외로, 윷놀이-같은그림찾기-원카드의 게임별 대진 정보가 섞여서 제공될 때에는 map을 활용하면 좋을 것 같다.
이 문제와 관련된 좋은 문제
BOJ 14425 (S3) 문자열 집합
BOJ 1269 (S4) 대칭 차집합
추가로 읽어보면 좋은 내용
- cpp stl set 라이브러리 내장함수