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

YH·2023년 7월 27일
0

문제

완주하지 못한 선수 : 문제 링크


문제 분석

  • 수많은 마라톤 선수들이 마라톤에 참여했고, 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주했다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성
  • 단 한명의 선수만 완주를 못했으므로 배열 participant와 completion를 비교해서 participant에는 있지만 completion에는 없는 사람을 찾아야 한다.
  • sort() 함수를 사용하여 배열 participant, completion을 모두 이름 오른차순으로 정렬
  • if문과 empty() 함수를 사용하여 completion 배열이 비어있는 경우, 즉 participant에 단 한명만 있는 경우 그 사람을 return
  • for loop에서 같은 인덱스의 원소를 비교하여 다른 경우 그 위치의 participant 원소를 return

algorithm 헤더의 sort() 함수 사용법
void sort(T start, T end, Compare comp); //comp 인자가 공란이면 오름차순 정렬

  • sort(v.begin(), v.end(), compare); // 사용자 정의 함수 사용
  • sort(v.begin(), v.end(), greater<자료형>()); // 내림차순
  • sort(v.begin(), v.end(), less<자료형>()); // 오름차순

empty() 함수 사용법
str.empty();
v.empty();

  • string 또는 vector 객체가 비어있으면 1을, 문자열 또는 원소가 저장되어 있으면 0을 반환

풀이

#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());
    
    if(completion.empty()) return participant[0];
    for(int i = 0; i < participant.size(); i++)
        if(participant[i] != completion[i]) return participant[i];
}
profile
Keep Recycling Your Dreams

0개의 댓글