https://school.programmers.co.kr/learn/courses/30/lessons/42576
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
맵문제를 풀어보고 싶어서 골랐다.
map은 검색, 삽입, 삭제가 O(log n)이다.
동명이인이 있을 수도 있으므로 선수당 몇번 나왔는지 숫자를 세주고
동명이인이 있을경우 숫자를 줄여주고 없을경우 맵에서 삭제해주었다.
#include <string>
#include <vector>
#include <map>
using namespace std;
string solution(vector<string> participant, vector<string> completion) {
string answer = "";
map<string, int>player;
int size=participant.size();
for(int i=0;i<size;i++)
player[participant[i]]++;
for(int i=0;i<size-1;i++)
{
if(player.find(completion[i])->second>1)
player[completion[i]]--;
else
player.erase(completion[i]);
}
answer = player.begin()->first;
return answer;
}
다른사람의 풀이 중에 좋다고 생각한 풀이
1.두 벡터 모두 정렬을 하고 같은 인덱스인데 같은 값이 아닐때 이름을 출력 / 아니면 맨끝에 있는 이름을 출력
2. unordered_multiset 을 이용한 풀이도 인상깊었다. 정렬할 필요가 없으니까 unordered.
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 전화번호 목록 c++ (0) | 2023.02.17 |
---|---|
[프로그래머스] 삼각 달팽이 c++ (0) | 2023.02.05 |
[프로그래머스] 괄호 회전하기 c++ (0) | 2023.01.29 |
[프로그래머스] 입국심사 c++ (0) | 2023.01.29 |
[프로그래머스] 더 맵게 / 힙(Heap) c++ (0) | 2023.01.20 |