본문 바로가기

백준/실버

[백준 20291번] 파일 정리 (C++)

문제링크 : https://www.acmicpc.net/problem/20291

 

20291번: 파일 정리

친구로부터 노트북을 중고로 산 스브러스는 노트북을 켜자마자 경악할 수밖에 없었다. 바탕화면에 온갖 파일들이 정리도 안 된 채 가득했기 때문이다. 그리고 화면의 구석에서 친구의 메시지를

www.acmicpc.net

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
const int MAX = INT_MAX;

int N;
string s;
map<string, int>m; //Key 기준 오름차순 정렬

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

    cin >> N;

    for(int i=0; i<N; i++)
    {
        cin >> s;
        int idx = s.find('.');
        
        string tmp = ""; //.이후 문자열
        for(int j=idx+1; j<s.size(); j++)
        {
            tmp+=s[j]; 
        }
        m[tmp]++; //갯수 체크
    }

    for(auto i : m)
    {
        cout << i.first << " " << i.second << "\n";
    }

    return 0;
}

 

.의 위치를 파악하고, . 이후 문자를 따로 더하여 문자열을 만들어준다.

해당 문자열에 대해서 map의 Key로 Value를 카운팅해준다.

 

이후 map에 저장된 Key와 Value의 값을 같이 출력해주면 된다.