본문 바로가기
알고리즘

[프로그래머스] 완주하지 못한 선수 (파이썬, C++)

by 자라자 2021. 4. 20.

문제링크

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

 

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

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

programmers.co.kr

 

Python

from collections import defaultdict
def solution(participant,completion):
    d=defaultdict(int)
    for p in participant:
        d[p]+=1
    for c in completion:
        d[c]-=1
        if d[c]==0:
            d.pop(c)
    return "".join(d.keys())

 

아이디어: int타입 default dict 이용!

 

C++

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

정렬 후 비교, 다 같으면 participant 마지막 반환, 아니면 copletion 반환.

'알고리즘' 카테고리의 다른 글

[프로그래머스] 위장 파이썬 C++  (0) 2021.05.03
[프로그래머스] 전화번호 목록  (0) 2021.05.03
Python 코딩테스트 끄적끄적  (0) 2021.04.20
C++ 코딩테스트 끄적끄적  (0) 2021.04.20