제가 공부한 내용을 정리하는 블로그입니다.
아직 많이 부족하고 배울게 너무나도 많습니다. 틀린내용이 있으면 언제나 가감없이 말씀해주시면 감사하겠습니다😁
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; }
    남은 하나의 이름이 완주하지 못한 참가자이므로 반환합니다.

 

+ Recent posts