๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
โœจ Algorithm

[๋ฐฑ์ค€/C++] 20291๋ฒˆ: ํŒŒ์ผ ์ •๋ฆฌ

by nitronium102 2022. 7. 17.

๋ฌธ์ œ

์นœ๊ตฌ๋กœ๋ถ€ํ„ฐ ๋…ธํŠธ๋ถ์„ ์ค‘๊ณ ๋กœ ์‚ฐ ์Šค๋ธŒ๋Ÿฌ์Šค๋Š” ๋…ธํŠธ๋ถ์„ ์ผœ์ž๋งˆ์ž ๊ฒฝ์•…ํ•  ์ˆ˜๋ฐ–์— ์—†์—ˆ๋‹ค. ๋ฐ”ํƒ•ํ™”๋ฉด์— ์˜จ๊ฐ– ํŒŒ์ผ๋“ค์ด ์ •๋ฆฌ๋„ ์•ˆ ๋œ ์ฑ„ ๊ฐ€๋“ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ™”๋ฉด์˜ ๊ตฌ์„์—์„œ ์นœ๊ตฌ์˜ ๋ฉ”์‹œ์ง€๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

๋ฐ”ํƒ•ํ™”๋ฉด์˜ ํŒŒ์ผ๋“ค์—๋Š” ๊ฐ’์ง„ ๋ณด๋ฌผ์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ๋“ค์–ด ์žˆ์–ด. ํ•˜๋‚˜๋ผ๋„ ์ง€์šฐ๊ฒŒ ๋œ๋‹ค๋ฉด ๋ณด๋ฌผ์€ ๋ฌผ๋ก ์ด๊ณ  ๋‹ค์‹œ๋Š” ๋…ธํŠธ๋ถ์„ ์“ธ ์ˆ˜ ์—†๊ฒŒ ๋  ๊ฑฐ์•ผ. ํŒŒ์ผ๋“ค์„ ์ž˜ ๋ถ„์„ํ•ด์„œ ๋ณด๋ฌผ์˜ ์ฃผ์ธ๊ณต์ด ๋  ์ˆ˜ ์žˆ๊ธธ ๋ฐ”๋ž„๊ฒŒ. ํžŒํŠธ๋Š” “ํ™•์žฅ์ž”์•ผ.

ํ™”๊ฐ€ ๋‚ฌ๋˜ ์Šค๋ธŒ๋Ÿฌ์Šค๋Š” ๋ณด๋ฌผ ์ด์•ผ๊ธฐ์— ๊ธˆ์„ธ ํ™”๊ฐ€ ํ’€๋ ธ๊ณ  ๋ณด๋ฌผ์˜ ์ •๋ณด๋ฅผ ์•Œ์•„๋‚ด๋ ค๊ณ  ์• ์ผ๋‹ค. ํ•˜์ง€๋งŒ ํŒŒ์ผ์ด ๋„ˆ๋ฌด ๋งŽ์€ ํƒ“์— ์ด๋‚ด ํฌ๊ธฐํ–ˆ๊ณ  ๋ณด๋ฌผ์˜ ์ ˆ๋ฐ˜์„ ๋ณด์ƒ์œผ๋กœ ํŒŒ์ผ์˜ ์ •๋ฆฌ๋ฅผ ์š”์ฒญํ•ด์™”๋‹ค. ์Šค๋ธŒ๋Ÿฌ์Šค์˜ ์š”์ฒญ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • ํŒŒ์ผ์„ ํ™•์žฅ์ž ๋ณ„๋กœ ์ •๋ฆฌํ•ด์„œ ๋ช‡ ๊ฐœ์”ฉ ์žˆ๋Š”์ง€ ์•Œ๋ ค์ค˜
  • ๋ณด๊ธฐ ํŽธํ•˜๊ฒŒ ํ™•์žฅ์ž๋“ค์„ ์‚ฌ์ „ ์ˆœ์œผ๋กœ ์ •๋ ฌํ•ด ์ค˜

๊ทธ๋Ÿผ ๋ณด๋ฌผ์˜ ์ ˆ๋ฐ˜์„ ์–ป์–ด๋‚ด๊ธฐ ์œ„ํ•ด ์–ผ๋ฅธ ์Šค๋ธŒ๋Ÿฌ์Šค์˜ ๋…ธํŠธ๋ถ ํŒŒ์ผ ์ •๋ฆฌ๋ฅผ ํ•ด์ค„ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค์ž!

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ๋ฐ”ํƒ•ํ™”๋ฉด์— ์žˆ๋Š” ํŒŒ์ผ์˜ ๊ฐœ์ˆ˜ N์ด ์ฃผ์–ด์ง„๋‹ค. (1≤N≤50 000)

๋‘˜์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ ์ค„์— ๋ฐ”ํƒ•ํ™”๋ฉด์— ์žˆ๋Š” ํŒŒ์ผ์˜ ์ด๋ฆ„์ด ์ฃผ์–ด์ง„๋‹ค. ํŒŒ์ผ์˜ ์ด๋ฆ„์€ ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž์™€ ์ (.)์œผ๋กœ๋งŒ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค. ์ ์€ ์ •ํ™•ํžˆ ํ•œ ๋ฒˆ ๋“ฑ์žฅํ•˜๋ฉฐ, ํŒŒ์ผ ์ด๋ฆ„์˜ ์ฒซ ๊ธ€์ž ๋˜๋Š” ๋งˆ์ง€๋ง‰ ๊ธ€์ž๋กœ ์˜ค์ง€ ์•Š๋Š”๋‹ค. ๊ฐ ํŒŒ์ผ์˜ ์ด๋ฆ„์˜ ๊ธธ์ด๋Š” ์ตœ์†Œ 3, ์ตœ๋Œ€ 100์ด๋‹ค.

์ถœ๋ ฅ

ํ™•์žฅ์ž์˜ ์ด๋ฆ„๊ณผ ๊ทธ ํ™•์žฅ์ž ํŒŒ์ผ์˜ ๊ฐœ์ˆ˜๋ฅผ ํ•œ ์ค„์— ํ•˜๋‚˜์”ฉ ์ถœ๋ ฅํ•œ๋‹ค. ํ™•์žฅ์ž๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ ์žˆ๋Š” ๊ฒฝ์šฐ ํ™•์žฅ์ž ์ด๋ฆ„์˜ ์‚ฌ์ „์ˆœ์œผ๋กœ ์ถœ๋ ฅํ•œ๋‹ค.

 

ํ’€์ด

๋ฌธ์ œ ์กฐ๊ฑด์—์„œ ์˜ˆ์ƒํ–ˆ๋“ฏ์ด ๋งต์„ ์“ฐ๋Š” ๋ฌธ์ œ์ด๋‹ค. substring๋งŒ ํ•œ๋‹ค๋ฉด ์‰ฝ๊ฒŒ ํ’€ ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค.

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

int main() {
    int n;
    string filename, ext;
    map<string, int> extension; // ํ™•์žฅ์ž๋ณ„ ๊ฐœ์ˆ˜ ์ €์žฅ

    // ์ž…๋ ฅ
    cin >> n;
    while(n--){
        cin >> filename;
        // .๋’ค์— ํ™•์žฅ์ž๋ช…
        ext = filename.substr(filename.find(".") +1, filename.length());
        extension[ext] += 1;
    }

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

๋Œ“๊ธ€