개발 로그/알고리즘
프로그래머스) 완주하지못한 선수 c++
CyberSoak
2021. 8. 27. 09:06
여기서는 배울 점이 크게 2가지가 있다.
1) unordered_map에 데이터를 넣는법(stirng,int pair한정)과, 2) 콜론(:)과 auto를 활용한 for문 작성법.
1)unordered_map에 데이터를 넣는법
vector container 쓸때는 push_back해서 뒤에서부터 차례로 넣었는데,
map은 (string, int) pair일 경우, x[key]++; 하면 그냥 넣어진다.
int의 경우 값을 지정하지 않으면 default로 0이 저장되어 잇나보다.
2)콜론(:)과 auto를 활용한 for문 작성법
' : '
내가 반복자로 쓸 데이터타입과 변수명을 지정하고, 그 반복자를 적용할 집합?만 지정해주면 된다.
string 변수명 : 적용할 집합
for( string name : participant) -> string 형태의 name을 participant를 돌면서 완주해라.
'auto'
ex)
auto는 위에 잇는 데이터 타입까지 알아서 찾아준다. map처럼 hash로 되어 있는 것도 하나씩 iterate 해줌.
for ( auto x : mapped_participant ) -> x(pair형태)의 x를 mapped_participant를 돌면서 완주해라.
//unordered_map 사용법
//auto 사용법
#include <string>
#include <vector>
#include <unordered_map>
using namespace std;
string solution(vector<string> participant, vector<string> completion) {
string answer = "";
unordered_map<string,int>participant_map;
for (string name : participant)
participant_map[name]++;
for (string name : completion)
participant_map[name]--;
for (auto pair : participant_map){
if(pair.second >=1)
answer = pair.first;
}
return answer;
}