완주하지 못한 선수
2022. 3. 23. 13:45ㆍPS/Programmers
[알고리즘 접근 방법]
1. 해쉬 접근법(효율성 평균 41ms=0.041초)
-해쉬에 먼저 참가자들을 다 넣는다
-참가자들 중에서 완주자 확인
-미완 주자 출력
//효율성 평균 41ms
string solution(vector<string> participant, vector<string> completion) {
unordered_map<string, int> map;
//일단 맵에 모든 참가자들을 다 넣는다
for (auto name : participant) //O(n)
map[name]++;
//참가자들 중에서 완료자들만 확인한다.
for (auto name : completion) { //O(n)
unordered_map<string, int>::iterator itr = map.find(name);
if (itr != map.end()) //n번 조건
itr->second--;
}
for (auto m : map)
if (m.second > 0)
return m.first;
}
2. 정렬 접근법(효율성 평균 69ms=0.069초)
-sort함수를 통한 내부 퀵 정렬(오름차순)
-두 개의 vector값을 하나씩 비교해보면 참가자 중에서 미완 주자 확인 가능
-return participant.back();는 참가자 중에서 맨 마지막 남는 사람이 미완 주자임
//효율성 평균 69ms
string ssolution(vector<string> participant, vector<string> completion) {
sort(participant.begin(), participant.end());
sort(completion.begin(), completion.end());
for (int i = 0; i < participant.size(); i++)
{
if (participant[i] != completion[i])
return participant[i];
}
//미완주자 출력
return participant.back();
}
반응형
'PS > Programmers' 카테고리의 다른 글
[KAKAO] 오픈채팅방 (0) | 2022.03.30 |
---|---|
[Summer/Winter Coding(~2018)] 스킬트리 (0) | 2022.03.29 |
더 맵게 (0) | 2022.03.24 |
[2021 Dev-Matching] 다단계 칫솔 판매 (0) | 2022.03.23 |
[2021 Dev-Matching] 행렬 테두리 회전하기 (0) | 2022.03.23 |