펭로그

[C++] 프로그래머스 코딩테스트 연습 - 완주하지 못한 선수 본문

Study/PS(Algorithm)

[C++] 프로그래머스 코딩테스트 연습 - 완주하지 못한 선수

노랑펭귄 2019. 1. 29. 16:59

문제링크 : https://programmers.co.kr/learn/courses/30/lessons/42576


algorithm 헤더의 sort를 사용하면 쉽게 풀 수 있다.

정렬된 후 participant와 completion 배열을 비교하다가 서로 다른 부분을 발견하게 되면 완주하지 못한 선수가 빠진 것임을 알 수  있기 때문에 아래와 같이 간단한 코드를 작성할 수 있다.


예를 들어 아래와 같이 두 배열을 정렬했을때

["abc", "abcd", "bcde", "cvfw"] - participant

["abc", "abcd", "cvfw"] - completion


"bcde"가 빠져있어서 2번 인덱스의 값이 서로 불일치하는 순간을 확인할 수 있다. 이때의 participant의 인덱스 값을 출력하면 정답이다.


1
2
3
4
5
6
7
8
9
10
11
12
13
#include <string>
#include <vector>
#include <algorithm>
 
using namespace std;
 
string solution(vector<string> participant, vector<string> completion) {
    sort(participant.begin(), participant.end());
    sort(completion.begin(), completion.end());
    int idx = 0;
    for(;idx < completion.size() && participant[idx] == completion[idx]; idx++);
    return participant[idx];
}
cs


Comments