코딩테스트/프로그래머스
[코딩테스트] Java 완주하지 못한 선수
[dev] hiro
2024. 11. 8. 16:02
제가 공부한 내용을 정리하는 블로그입니다.
아직 많이 부족하고 배울게 너무나도 많습니다. 틀린내용이 있으면 언제나 가감없이 말씀해주시면 감사하겠습니다😁
Programmers 알고리즘 고득점 Kit입니다.
포인트
participant와 completion에서 언급된 선수가 짝수이면 완주한 선수이고 홀수이면 완주하지 못한 선수입니다.
완주하지 못한 선수 소스코드
import java.util.*;
class Solution {
public String solution(String[] participant, String[] completion) {
Set<String> runners = new HashSet<>();
for (String runner: participant) {
if (!runners.contains(runner)) {
runners.add(runner);
} else {
runners.remove(runner);
}
}
for (String runner: completion) {
if (runners.contains(runner)) {
runners.remove(runner);
} else {
runners.add(runner);
}
}
for (String ans: runners) {
return ans;
}
return null;
}
}
코드 설명
- Set<String> runners = new HashSet<>();
참가자와 완주자를 저장할 집합 runners를 생성합니다. - for (String runner: participant)
참가자 배열을 순회하며:- 이미 집합에 있는 참가자이면 집합에서 제거합니다 (완주 처리).
- 그렇지 않으면 집합에 추가합니다.
- for (String runner: completion)
완주자 배열을 순회하며:- 집합에 있는 참가자이면 제거합니다. (완주)
- 집합에 없는 참가자이면 집합에 추가합니다. (완주하지 못한 참가자)
- for (String ans: runners) { return ans; }
남은 하나의 이름이 완주하지 못한 참가자이므로 반환합니다.