무작정 풀다보면 시간초과가 날 수 있는 문제다.
두 배열에서 같은 선수가 없다면 바로 return하면 되기 때문에 정렬을 해준다.
정렬된 배열에서 같은 이름을 가진 선수가 이어서 나온다면 다음 인덱스로 넘어가고 count++하여
두 배열에서 동명이인이 몇명인지 확인할 수 있도록 한다.
이름이 다르거나 동명이인의 수가 다르다면 리턴해서 결과를 얻으면 끝!
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
string solution(vector<string> participant, vector<string> completion) {
vector<int> val;
string answer = "";
sort(participant.begin(), participant.end());
sort(completion.begin(), completion.end());
int count1 = 1, count2 = 1;
int j = 0, i = 0;
while(true) {
count1 = 1, count2 = 1;
while(i < participant.size() - 1 && participant[i] == participant[i + 1]) {
count1++;
i++;
}
while(j < completion.size() - 1 && completion[j] == completion[j + 1]){
count2++;
j++;
}
if(participant[i] != completion[j] || count1 != count2) {
answer = participant[i];
return answer;
}
i++, j++;
}
return answer;
}
|
cs |
'problem solving' 카테고리의 다른 글
[프로그래머스]K번째수 (0) | 2020.03.06 |
---|---|
[프로그래머스]모의고사 (0) | 2020.03.06 |
[프로그래머스]124나라의 숫자 (0) | 2020.03.06 |
[프로그래머스]다리를 지나는 트럭 (0) | 2020.03.05 |
[프로그래머스]멀쩡한 사각형 (0) | 2020.03.05 |