문제
https://school.programmers.co.kr/learn/courses/30/lessons/42576
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 해석
- participant 배열에서 completion 배열에 있는 사람을 빼고 남은 사람을 return 하면 된다.
- 이때 participant 에는 중복된 사람(동명이인)이 존재 할 수 있다.
- 따라서 동명이인인 경우에 completion에 그 중 한명만 적혀 있다면 나머지 사람은 완주 하지 못한걸로 처리 된다.
알고리즘
- c++ 의 map 을 이용한다.
- participant 의 사람 이름을 key 로 동명이인인 경우 value 를 2, 아닐 경우를 1로 저장 하면 해결하기 편해 진다.
- map 에 저장 후 completion 을 처음부터 끝까지 돌며 다름을 수행한다.
- map 에서 completion에 나오는 이름의 value 를 1 빼준다.
- 모든 수행이 끝난 후 value 가 0이 아닌 key 를 찾아 주면 된다.
코드
#include <string>
#include <vector>
#include <unordered_map>
using namespace std;
string solution(vector<string> participant, vector<string> completion) {
string answer = "";
unordered_map<string, int> map;
for(auto player : participant){
if(map.end() == map.find(player)){
map.insert(make_pair(player, 1));
} else {
map[player] += 1;
}
}
for(auto player : completion){
map[player] -= 1;
}
for(auto player : participant){
if(map[player] > 0){
answer = player;
break;
}
}
return answer;
}
'알고리즘 > 프로그래머스' 카테고리의 다른 글
프로그래머스 : 다리를 지나는 트럭 - C++ (0) | 2023.07.10 |
---|---|
프로그래머스 : 콜라츠 추측 - C++ (0) | 2023.07.10 |
2023.02.15(목) - 프로그래머스 고득점 Kit 스터디(힙) (0) | 2023.02.16 |
2023.02.15(목) - 프로그래머스 고득점 Kit 스터디(스택/ 큐) (0) | 2023.02.16 |
2023.02.09(목) - 프로그래머스 고득점 Kit 스터디 (0) | 2023.02.09 |