[C++] 백준 16165 걸그룹 마스터 준석이
반응형
1. 서론
복잡한 듯 복잡하지 않은 문제다.
2. 문제 풀이
퀴즈 프로그램을 만든다. 걸그룹의 수와 그룹 이름, 멤버 이름을 입력받고 저장한다. 그리고 그룹 멤버 이름과 숫자를 입력한다.
입력한 숫자가 1이면 멤버가 속한 그룹 이름을 출력하고 0이면 그룹의 멤버들을 사전순으로 출력한다.
그룹의 이름과 멤버들의 이름을 어떻게 저장할까 어렵게 생각했는데 2차원 배열로 저장했다.
배열에 멤버들의 이름을 차례로 저장한다. 그런데 사전순으로 정렬해야 하기 때문에 정렬로 멤버들의 이름을 정렬한 후에
배열의 맨 뒤에 그룹의 이름을 넣어준다. (처음에 넣으면 같이 정렬되기 때문에)
그 후 멤버의 이름이 입력되면 2차원 배열을 다 돌면서 찾아준 후 0일 때 멤버들의 이름을 출력하고 1일 때 그룹의 이름을 출력한다.
3. 코드 설명
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
int n, m, i, j, x, k;
vector<vector<string>> v;
string s, t;
cin >> n >> m;
for (i = 0; i < n; i++)
{
cin >> t >> x;
vector<string> g;
for (j = 0; j < x; j++)
{
cin >> s;
g.push_back(s);
}
sort(g.begin(), g.end());
g.push_back(t);
v.push_back(g);
}
for (i = 0; i < m; i++)
{
cin >> s >> x;
for (j = 0; j < n; j++)
{
for (k = 0; k < v[j].size(); k++)
{
if (v[j][k] == s)
{
if (x == 0)
for (k = 0; k < v[j].size() - 1; k++)
cout << v[j][k] << endl;
else
cout << v[j][v[j].size() - 1] << endl;
}
}
}
}
}
값들을 입력 받는다. 2차원 배열에 각 그룹의 멤버들을 넣어준다. 정렬 후에 마지막 항에 그룹의 이름을 넣어준다.
위의 단계를 n번 반복하고 난 후 문제를 입력받는다.
2차원 배열들을 돌면서 문제인 s값을 찾아준다. s값을 찾으면 같이 입력된 숫자가 0인지 1인지 확인한 후 각 조건에 맞는 값을 출력해준다.
반응형
'Algorithm' 카테고리의 다른 글
[C++] 백준 16675 두 개의 손 (0) | 2021.04.17 |
---|---|
[C++] 백준 17224 APC는 왜 서브태스크 대회가 되었을까? (0) | 2021.04.17 |
[C++] 백준 17389 보너스 점수 (0) | 2021.04.17 |
[C++] 백준 15312 이름 궁합 (0) | 2021.04.16 |
[C++] 백준 10539 수빈이와 수열 (0) | 2021.04.16 |