https://www.acmicpc.net/problem/20291
20291번: 파일 정리
친구로부터 노트북을 중고로 산 스브러스는 노트북을 켜자마자 경악할 수밖에 없었다. 바탕화면에 온갖 파일들이 정리도 안 된 채 가득했기 때문이다. 그리고 화면의 구석에서 친구의 메시지를
www.acmicpc.net
string 함수의 find() 와 substr() 함수를 사용하였습니다.
counting은 map을 사용하였는데 <정렬 + 중복 count 가능> 으로 한줄로 해결가능 할 것 같아서 map을 사용하였습니다.
근데 key값에 접근하는 방법을 까먹어서 다시 검색검색,,
첫번째 방법 : iterator로 선언해서 for문 돌려주면 됩니당.
for (map<string, int>::iterator iter = ex.begin(); iter != ex.end(); iter++) {
cout << iter->first << " " << iter.second << "\n";
}
두번째 방법: auto 사용해서 그냥 돌려줍니다.
for (auto iter: ex) {
cout << iter.first << " " << iter.second << "\n";
}
주의할 점은 iterator는 ->로 접근, auto로 접근할 때는 . 으로 first, second에 접근하면 됩니당//
#include <iostream>
#include <string>
#include <vector>
#include <map>
using namespace std;
vector<string> fileNames;
map<string, int> ex;
int main(int argc, const char * argv[]) {
int N;
cin >> N;
for (int i=0; i<N; i++) {
string file;
cin >> file;
int dot = (int)file.find('.');
ex[file.substr(dot+1)]++;
}
for (map<string, int>::iterator iter = ex.begin(); iter != ex.end(); iter++) {
cout << iter->first << " " << iter->second << "\n";
}
return 0;
}
'ALGORITHM > OTHER' 카테고리의 다른 글
[c++] 1302 베스트셀러 (map 사용) (0) | 2022.01.06 |
---|---|
[JAVA] 1719 택배 (다익스트라) (0) | 2021.09.02 |
[Java] 16926 배열 돌리기 1, 16935 배열 돌리기 3 (0) | 2021.08.12 |
[c++] 전화번호 목록 (프로그래머스-Trie, 정렬, 해시) (0) | 2021.07.17 |
[c++] 숫자 문자열과 영단어 (프로그래머스, 구현) (0) | 2021.07.12 |