Krononberg

프로그래머스) 완주하지못한 선수 c++ 본문

개발 로그/알고리즘

프로그래머스) 완주하지못한 선수 c++

k._. 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;
}