코드굽는 타자기

Programmers[42576] - 완주하지 못한 선수[Level1] 본문

알고리즘/해시

Programmers[42576] - 완주하지 못한 선수[Level1]

bright-jun 2020. 4. 30. 01:42

링크

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

문제설명

  • 집합 더하기 빼기

문제풀이

  • 중복 고려해야함
  • HashMap 사용

문제코드

import java.util.HashMap;

public class Solution {
    public static String solution(String[] participant, String[] completion) {
        HashMap<String, Integer> hm = new HashMap<String, Integer>();

        String answer = "";

        for(String p : participant) {
            if(hm.containsKey(p)) {
                hm.put(p, hm.get(p)+1);
            }
            else {
                hm.put(p,1);
            }
        }

        for(String c : completion) {
            hm.put(c,hm.get(c)-1);
        }

        for (String key : hm.keySet()) {
            if(hm.get(key)==1) {
                answer = key;
                break;
            }
        }

        return answer;
    }

    public static void main(String[] args) {
        System.out.println(solution(new String[] {"leo", "kiki", "eden"},
                                    new String[] {"eden","kiki"}));
        System.out.println(solution(new String[] {"marina", "josipa", "nikola", "vinko", "filipa"},
                                    new String[] {"josipa", "filipa", "marina", "nikola"}));
        System.out.println(solution(new String[] {"mislav", "stanko", "mislav", "ana"},
                                    new String[] {"stanko", "ana", "mislav"}));
    }
}

아쉬운점

  • 제약조건 제대로 고려 못했음
    • 참가자 중에는 동명이인이 있을 수 있습니다.
    • Map에 Integer값을 가지고 count하도록 하였음

잘한점

  • HashMap구현 및 탐색
Comments