Programing/백준, 프로그래머스(C++)

[C++][백준 20291] 파일 정리

hye3193 2025. 1. 13. 19:14

https://www.acmicpc.net/problem/20291

 

제출 코드

#include <iostream>
#include <map>
#include <string>
using namespace std;

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

    int n;
    cin >> n;
    map<string, int> m;

    while(n--)
    {
        string str;
        cin >> str;
        m[str.substr(str.find('.') + 1)]++;
    }

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

C++에서 문자열을 특정 기준으로 나눌 때 substr(시작 위치, 길이) 함수를 사용할 수 있다

* 길이: 시작 위치부터 몇 개까지를 자를 건지( = 잘라진 문자열의 길이)

만약 길이를 생략하고 인자를 하나만 전달하면 시작 위치부터 마지막 위치까지를 잘라서 반환한다

 

find(문자)함수로 '.'의 위치를 찾고 그대로 자르면 .txt와 같은 형태로 잘리기 때문에 +1을 해주어 txt와 같은 상태로 잘리도록 하였다

 

map을 이용해 개수를 세는 방법을 사용했다