본문 바로가기
Algorithm/프로그래머스

[해시] 완주하지 못한 선수

by seeker00 2021. 9. 15.

프로그래머스 완주하지 못한 선수

java

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

        // .getOrDefault() 메소드를 참고함
        Integer n;
        for (String s : participant) {
            map.put(s, (( n = (map.get(s))) != null) ? n + 1  : 1);
        }
        for (String s : completion) {
            if ((n = (map.get(s) - 1)) == 0) map.remove(s);
            else map.put(s, n);
        }
        Set<String> strings = map.keySet();
        for (String s : strings) answer = s;
        return answer;
    }
}
  • HashMap 라이브러리 문서를 읽어보려고 노력했다...ㅎ 노력에 의의를 둔다.

python

def solution(participant, completion):
    answer = ''
    par={}

    for n in participant:
        if n in par.keys(): par[n]= par[n]+1
        else: par[n]= 1
    for n in completion:
        par[n] = par[n]-1
        if par[n]==0: del par[n]
    answer = list(par.keys())[0]
    return answer
  • 자바 코드와 같은 로직이다. 몇 달 전 파이썬으로 처음 풀었을 때는 딕셔너리 구조를 바로 생각해내지 못했다. 지금도 잘 모르지만 이 땐, 자료구조에 대해서 정말 아는 게 없었던 것 같다. 여튼 이 때, 딕셔너리를 머리에 대충 넣어뒀기에, 이번엔 문제 풀 때 같은 로직이 바로 떠올랐다.

'Algorithm > 프로그래머스' 카테고리의 다른 글

[힙(Heap)] 더 맵게  (0) 2021.12.16
[깊이/너비 우선 탐색(DFS/BFS)] 타겟 넘버  (0) 2021.12.07
[해시] 위장  (0) 2021.09.24
[해시] 전화번호 목록  (0) 2021.09.16
[스택/큐] 기능개발  (0) 2021.09.13