Min:D's Devlog

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

알고리즘/프로그래머스

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

Min:D 2020. 11. 30. 18:00

문제

프로그래머스 해시 - 완주하지 못한 선수 (Level 1)

 

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

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

programmers.co.kr

 


문제 풀이

접근 방식

이 문제는 완주하지 않은 한 명의 선수를 찾는 문제이다.

 

해시를 사용해서 문제를 해결해도 되지만,

정렬을 사용하면 더 쉽게 구현할 수 있을 것 같아 정렬을 하여 문제를 해결하였다.

 

우선 참여 선수 배열완주 선수 배열을 sort를 사용하여 정렬해주었고,

완주 선수의 수만큼 for문을 수행하며 이름이 일치하지 않는 경우일 때의 이름을 리턴해주었다.

 

for문에서 일치하지 않는 이름을 찾지 못한 경우에는 마지막 참여 선수가 완주하지 못한 것이므로

가장 마지막에 위치한 선수의 이름을 리턴해주어 문제를 해결하였다.

 


풀이 코드 - C++

#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());
    
    int len = completion.size();
    for(int i = 0 ; i < len ; i++){
        if(participant[i] != completion[i])
            return participant[i];
    }
    return participant[len];
}

실행 결과

Comments