[프로그래머스] 완주하지 못한 선수(C++)
by atomic0x90 (Yujun Han)
[프로그래머스] 완주하지 못한 선수 풀이 (해시)
https://programmers.co.kr/learn/courses/30/lessons/42576
이 문제는 주어진 배열의 값(completion) 그대로 배열에 값(participant)이 존재하는지 탐색하면 시간이 너무 오래 걸린다.
그래서 배열의 값을 정렬하고 탐색해서 효율성을 높여야 한다.
문제 풀이
- 주어진 배열을 정렬한다.
- 정렬한 배열을 순차 탐색을 통하여 다른 값인지 검사한다.
- 만약 순차 탐색을 끝냈는데 다른 값이 없다면 마지막 값이 다른 것이다.
정답 코드
#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 목록 보기 |
---|---|---|