프로그래머스알고리즘

완주하지 못한 선수 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

ldgeao99.tistory.com/379