완주하지 못한 선수 문제의 해결을 위해서는 다음과 같은 알고리즘을 구현해야 한다.

  1. 해시 테이블을 이용하여 참여한 선수들의 이름과 참여 여부를 저장한다.
  2. 완주한 선수들의 이름을 해시 테이블에서 검색하여 참여 여부를 false로 변경한다.
  3. 참여하지 못한 선수(참여 여부가 true인 선수)를 해시 테이블에서 검색하여 반환한다.

다음은 위 알고리즘을 구현한 코드이다.

import java.util.HashMap;
import java.util.Map;

public class Solution {
    public String solution(String[] participant, String[] completion) {
        String answer = "";

        // 참여한 선수들의 이름과 참여 여부를 저장하는 해시 테이블을 생성합니다.
        Map<String, Integer> hashTable = new HashMap<>();

        // 참여한 선수들의 이름과 참여 여부를 해시 테이블에 추가합니다.
        for (String name : participant) {
            if (!hashTable.containsKey(name)) {
                hashTable.put(name, 1);
            } else {
                hashTable.put(name, hashTable.get(name) + 1);
            }
        }

        // 완주한 선수들의 이름을 해시 테이블에서 검색하여 참여 여부를 false로 변경합니다.
        for (String name : completion) {
            hashTable.put(name, hashTable.get(name) - 1);
        }

        // 참여하지 못한 선수(참여 여부가 true인 선수)를 해시 테이블에서 검색하여 반환합니다.
        for (String name : participant) {
            if (hashTable.get(name) != 0) {
                answer = name;
                break;
            }
        }

        return answer;
    }
}

위 코드에서는 먼저, 참여한 선수들의 이름과 참여 여부를 저장하는 해시 테이블을 생성한다. 참여한 선수들의 이름과 참여 여부를 해시 테이블에 추가한다. 그리고, 완주한 선수들의 이름을 해시 테이블에서 검색하여 참여 여부를 false로 변경한다. 마지막으로, 참여하지 못한 선수(참여 여부가 true인 선수)를 해시 테이블에서 검색하여 반환한다.

해시 테이블을 이용하여 데이터를 저장하고 검색하는 연습을 할 수 있는 좋은 문제!

profile
I'm still hungry.

0개의 댓글