오답노트

프로그래머스 1단계 - 완주하지 못한 선수 본문

C,C++/코딩테스트

프로그래머스 1단계 - 완주하지 못한 선수

권멋져 2022. 5. 31. 12:05

https://programmers.co.kr/learn/courses/30/lessons/42576?language=cpp 

 

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

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

programmers.co.kr

- 문제 파악

마라톤 경기에 참가한 선수와 완주한 선수의 이름을 각각 배열로 주어진다. 이 때 완주하지 못한 선수의 이름을 출력하라.

(모든 경우에 1명만 완주하지 못했다)

 

- 정답

처음엔 이중for로 풀었는데 시간이 너무 오래 걸려서 집합 관련 함수를 사용했다.

그런데 제대로 차집합을 출력해지 못해서 오름차순으로 정렬하니 해결됐다.

 

#include "bits/stdc++.h"

using namespace std;

string solution(vector<string> participant, vector<string> completion) {
    string answer = "";
    
    vector<string> vec(1);
    
    sort(participant.begin(), participant.end());
    sort(completion.begin(), completion.end());
    
    auto iter = set_difference(participant.begin(), participant.end()
                                 , completion.begin(), completion.end(), vec.begin());

    answer = vec[0];
   
    return answer;
}