공부 기록

[프로그래머스] 완주하지 못한 선수 C++

by 너나나

https://programmers.co.kr/learn/courses/30/lessons/42576

 

코딩테스트 연습 - 완주하지 못한 선수

수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수

programmers.co.kr

참여자중에 한 명만 완주를 못하고 나머지는 다 완주를 하니까 참여자, 완주자를 각각 정렬했을 때 같은 위치에 완주자랑 참여자 이름이 다를 때 그 참여자가 완주 못한 친구겠구만!!! 이라고 생각!!!

#include <string>
#include <vector>
#include <algorithm>
using namespace std;

string solution(vector<string> participant, vector<string> completion) {
    string answer = "";
    sort(participant.begin(), participant.end());
    sort(completion.begin(), completion.end());
    for(int i = 0; i < participant.size(); i++){
        if(participant[i] != completion[i]){
            answer = participant[i];
            break;
        }
    }
    return answer;
}

이러면 맞긴 한데 문제가 해시를 이용해서 풀기를 바라는 애라 다른사람 풀이 보면서 해시도 사용해봤다!!

#include <string>
#include <vector>
#include <unordered_set>
using namespace std;

string solution(vector<string> participant, vector<string> completion) {
    unordered_multiset<string> names;
    for(int i = 0; i < participant.size(); i++) {
        names.insert(participant[i]);
    }
    for(int i = 0; i < completion.size(); i++) {
        unordered_multiset<string>::iterator iter = names.find(completion[i]);
        names.erase(iter);
    }
    
    return *names.begin();
}

 

블로그의 정보

공부 기록

너나나

활동하기