[Algorithme] 완주하지 못한 선수

gunggme·2023년 12월 28일

알고리즘

목록 보기
34/42

시작

어떻게?

우선 어떻게 푸는지 부터 알아보자. 우선 문자열도 정렬이 가능한데, 정렬을 해서 두 배열을 비교를 한다면 어디서 틀렸는지 알수 있는 게 된다. 왜 그러냐면 예시로 {a, d, b, e}, {b,e,d}라는 배열이 존재한다 하자. 그렇다면 정렬을 하면, {a,b,d,e}, {b,d,e} 배열이 되는데, 하나씩 비교를 해보면 a가 안들어간다는 것을 알 수 있다. 그러면 이제 a가 아닌 z라는게 들어간다면 하나씩 비교를 한다 해도 비교하는 배열이 끝이난다면, 마지막 인덱스만 틀리기 때문에 마지막만 리턴하면 정답이 된다.

정답 코드

string solution(vector<string> participant, vector<string> completion) {
	string answer = "";
	// 정렬
	sort(participant.begin(), participant.end());
	sort(completion.begin(), completion.end());

	// 틀린게 있는지 비교
	for (int i = 0; i < participant.size(); i++) {
		if (i < completion.size()) {
			if (participant[i] != completion[i]) {
				return participant[i];
			}
		}
	}
	
	// 마지막만 다른거기 때문에 마지막만 리턴
	return participant[participant.size()-1];
}
profile
안녕하세요!

0개의 댓글