본문 바로가기
알고리즘/프로그래머스

[프로그래머스] 완주하지 못한 선수 - 자바

by binghe819 2020. 7. 3.

https://programmers.co.kr/learn/courses/30/lessons/42576

 

코딩테스트 연습 - 완주하지 못한 선수

수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수��

programmers.co.kr

1. 풀이


Hash를 이용하는 문제이다. Hash를 기본 사용법을 알 수 있는 예제인듯 싶다.

 

동명이인만 잘 생각해서 풀이하면 될듯 하다.

 

다른 분들의 풀이를 보니, Hash를 사용하지 않고 정렬로 풀이하시는 분들도 계신듯 하다.

2. 코드


import java.util.*;
class Solution {
    public String solution(String[] participant, String[] completion) {
        String answer = "";
        
        HashMap<String, Integer> record = new HashMap<String, Integer>();

        for(String com : completion){
            // 아직 완주한 적 없는 선수라면
            if(record.get(com) == null){
                record.put(com, 1);
            } else { // 동명이인으로 완주한 적 있는 선수라면 +1해주기
                int tmp = record.get(com)+1;
                record.put(com, tmp);
            }
        }

        for(String part : participant){
            // 만약 완주한 적 없는 선수라면
            if(record.get(part) == null || record.get(part) == 0){
                answer = part;
                break;
            }

            // 완주한 선수라면 -1해주기
            int tmp = record.get(part)-1;
            record.put(part, tmp);
        }
        
        return answer;
    }
}

댓글