프로그래머스알고리즘
완주하지 못한 선수 hash map 사용
풀스택 개발자
2020. 10. 1. 16:33
#include <string>
#include <vector>
#include<iostream>
#include<unordered_map>
using namespace std;
string solution(vector<string> participant, vector<string> completion) {
unordered_map<string, int> strMap;
for (auto elem : participant)
{
strMap[elem]++;
}
for (auto elem : completion)
{
strMap[elem]--;
}
for (auto p : strMap)
{
if (p.second > 0)
{
return p.first;
}
}
}
순차적으로 participant의 데이터를 map에 적재합니다.
participant의 값이 "a" , "b" , "c" 일 경우
a 1
b 1
c 1
이렇게 map의 key 와 value 을 활용하여 해시테이블을 만듭니다.
다음으로
completion의 값이 "a" , "b" 일 경우
a 0
b 0
c 1
이렇게 각각의 value값을 1씩 감소시켜줍니다.
이런 방법으로 해시테이블 데이터를 처리하면
결국 value값이 1인 값만 반환해주면 문제가 해결됩니다.
test code
#include <string>
#include<iostream>
#include<unordered_map>
using namespace std;
int main() {
vector<string> participant = { "b","c","a" };
vector<string> completion = { "b","c"};
unordered_map<string, int> strMap;
for (auto elem : participant)
{
strMap[elem]++;
}
//map 출력
/*
for (auto p : strMap)
{
cout << p.first << " " << p.second << endl;
}
*/
for (auto elem : completion)
{
strMap[elem]--;
}
//map 출력
/*
for (auto p : strMap)
{
cout << p.first << " " << p.second << endl;
}
*/
for (auto p : strMap)
{
if (p.second > 0)
{
cout << p.first;
}
}
}
twpower.github.io/91-how-to-use-map-in-cpp
[C++] C++ STL map 기본 사용법과 예제
Practice makes perfect!
twpower.github.io