PS/정렬 알고리즘[Sort]

백준 20291 파일 정리(c++)

SeungbeomKim 2022. 7. 12. 15:58

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

 

20291번: 파일 정리

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

www.acmicpc.net

<코드>

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

int main()
{
	int n;
	cin>>n;
	string str;
	map<string,int>m;
	while(n--)
	{
		cin>>str;
		string ans="";
		for(int i=0;i<str.size();i++)
		{
			if(str[i]=='.'){
				str.erase(str.begin(),str.begin()+i+1);
				m[str]++;
				continue;
			} 
		}
	}
	for(auto it=m.begin();it!=m.end();it++)
	{
		cout<<(*it).first<<' '<<(*it).second<<'\n';
	}
}

<풀이과정>

확장자는 . 이후부터의 문자열이다. 그러므로 .을 발견한 부분까지의 문자열을 제거해주기 위해 str.erase를 사용했다.

더불어 그 이후의 문자열을 map에 저장해준다(key값과 value값(해당 원소의 개수를 의미) 각각 추가)

그리고 확장자가 여러 개면 사전 순으로 출력하라고 되어있는데 map 헤더 자체에서 key값을 기준으로 정렬되기 때문에, 이는 고려하지 않아도 될 사항이다. 

 

'PS > 정렬 알고리즘[Sort]' 카테고리의 다른 글

백준 1015 수열 정렬(c++)  (0) 2022.07.17
18870 좌표 압축(c++)  (0) 2022.07.13
백준 1374 강의실(c++)  (1) 2022.07.11
백준 5635 생일(c++)  (0) 2022.07.07
백준 10989 수 정렬하기 3(c++)  (1) 2022.07.07