Programmers_hash01 - 완주하지 못한 선수
프로그래머스 -해시 - 완주하지 못한 선수 문제 입니다.
1. 문제
https://programmers.co.kr/learn/courses/30/parts/12077
2. 분류 및 난이도
Programmers 문제입니다. 해시 중에 가장 쉬운 Level1 문제입니다.
3. 생각한 것들(문제 접근 방법)
- 대놓고 hash 라고 써 있어서 c++ STL을 이용하려 했지만, 표준이 아닌 hash STL은 사용할 수 없었습니다.
- vector의 인풋이 최대 10만개 들어오고 비교대상도 99,999개라고 했으니 일반적으로 값들을 하나하나 찾아주면 효율성의 문제가 생길거라 생각했습니다.
- 다른 한사람만 찾으면 되기에 정렬을 하고 틀린 배열이 나온경우 결과를 리턴하는 식으로 작성하였습니다.
- 최악의 경우 맨 마지막 배열에서 다른 사람이 존재할 경우 배열비교 시 인덱스 범위를 벗어나므로 예외처리를 하나 해줬습니다.
4. 접근 방법을 적용한 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include<iostream>
#include <string>
#include <vector>
#include<algorithm>
using namespace std;
string solution(vector<string> participant, vector<string> completion) {
int counting =0;
string answer = "";
sort(participant.begin(),participant.end());
sort(completion.begin(),completion.end());
for (int size = 0;size<participant.size();++size)
{
//만약 비교대상의 인덱스를 벗어날 경우 case1인경우
if(size>completion.size())
{
answer = participant[size];
return answer;
}
if(participant[size]!=completion[size])
{
answer = participant[size];
return answer;
}
}
return answer;
}
5. 결과
This post is licensed under CC BY 4.0 by the author.