728x90
문제
마라톤에 참가한 선수 중 한 사람만 통과하지 못했다.
마라톤에 참가한 선수의 이름이 들어가있는 리스트와 완주한 선수들의 이름이 들어있는 리스트가 입력이 되었을 때
완주하지 못한 선수의 이름을 출력해보자.
마라톤에 참가한 선수 중 동명이인이 있을 수 있다.
입력
["leo", "kiki", "eden"]
["eden", "kiki"]
출력
"leo"
1. 두 개의 리스트를 비교할 때 정렬을 한 뒤 비교를 해보자.
2. 입력된 두 개의 리스트를 오름차순으로 정렬한다.
3. completion을 기준으로 for문을 돌려 같은위치에 있는 이름을 비교한다.
4. 만약 같은 위치에 다른이름이 있다면 participant의 이름을 출력한다.
5. 위의 for문에서 return되지 않았다면 participant의 마지막 이름을 출력한다.
python
def solution(participant, completion):
answer = ''
# 오름차순으로 정렬하여 비교한다.
participant.sort()
completion.sort()
# completion을 기준으로 탐색을 진행한다.
# 정렬을 진행했기 때문에 같은위치에 이름이 같은지 다른지 판단을 한다.
for idx in range(len(completion)):
if completion[idx]!=participant[idx]:
return participant[idx]
# 위의 for문에서 return되지 않았다면
# participant의 마지막이름이 완료하지 못한 것이기 때문에
# participant의 마지막 이름을 answer에 대입한다.
answer=participant[-1]
return answer
c++
#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 size=completion.size();
for(int i=0;i<size;i++){
if(participant[i]!=completion[i]){
return participant[i];
}
}
answer=participant[participant.size()-1];
return answer;
}
'알고리즘 풀이 > 프로그래머스' 카테고리의 다른 글
[Level1] K번째수 (0) | 2021.01.22 |
---|---|
[Level1] 모의고사 (0) | 2021.01.22 |
[Level1] 같은 숫자는 싫어 (0) | 2021.01.21 |
[Level1] 나누어 떨어지는 숫자배열 (0) | 2021.01.21 |
[Level1] 자릿수 더하기 (0) | 2021.01.21 |