Algorithm/Data Structure

[BOJ 16499] S4 동일한 단어 그룹화하기 {C++}

surimi🍥 2022. 6. 30. 14:45
반응형

16499번: 동일한 단어 그룹화하기

 

16499번: 동일한 단어 그룹화하기

첫째 줄에 단어의 개수 N이 주어진다. (2 ≤ N ≤ 100) 둘째 줄부터 N개의 줄에 단어가 한 줄에 하나씩 주어진다. 단어는 알파벳 소문자로만 이루어져 있고, 길이는 10을 넘지 않는다.

www.acmicpc.net

C++

  • unordered_set은 정렬을 하지 않고 중복만 제외하는 set 자료 구조이다.
  • unordered_set<string> 으로 선언하면 unordered_map<string, bool> 형태와 같다.
  • 입력되는 모든 문자열을 알파벳 순으로 정렬해 중복을 제거하면 문제에서 요구하는 알파벳 구성이 다른 문자열의 개수를 찾을 수 있다.
#include <iostream>
#include <algorithm>
#include <unordered_set>
using namespace std;

int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);

    unordered_set<string> U;
    string S;
    int N;
    cin >> N;

    while (N--)
    {
        cin >> S;
        // 문자열의 시작 주소와 끝 주소를 넣어준다.
        sort(&S[0], &S[S.size()]);
        U.insert(S);
    }
    cout << U.size();
}
반응형