[프로그래머스] 완주하지 못한 선수 풀이 (해시)


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


이 문제는 주어진 배열의 값(completion) 그대로 배열에 값(participant)이 존재하는지 탐색하면 시간이 너무 오래 걸린다.
그래서 배열의 값을 정렬하고 탐색해서 효율성을 높여야 한다.


문제 풀이

  1. 주어진 배열을 정렬한다.
  2. 정렬한 배열을 순차 탐색을 통하여 다른 값인지 검사한다.
    • 만약 순차 탐색을 끝냈는데 다른 값이 없다면 마지막 값이 다른 것이다.

정답 코드

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

감사합니다.


홈으로 가기 더 많은 programmers post 보기 post 목록 보기