[프로그래머스] 완주하지 못한 선수 42576 (JAVA)

dia·2023년 9월 29일
0

풀이방식

  1. HashMap(key = 참가자 이름, value = 미완주 여부) 생성
  2. 해당 이름이 참가자 명단에 있으면 +1
  3. 해당 이름이 완주 명단에 있으면 -1
  4. 0이 아닐 경우 미완주자

포인트

티켓 개념

참가 신청을 했을 경우 티켓을 배부해주고, 참가할 경우 티켓을 사용하는 개념으로 생각함
참가하지 않았을 경우, 미사용 티켓이 남게 됨

getOrDefault

(Map)map.getOrDefault(key, default)
찾는 키(key)가 존재하면 해당 키의 값 반환, 없으면 디폴트 값(default) 반환

사용 이유:
원하는 키(이름)에 해당하는 값이 존재하면 그 값에 +1을 하고, 없으면 새로 1을 넣어주기 위함


구현

import java.util.HashMap;

public class NUM42576 {
    public static void main(String[] args) {
        String[] participant = {"marina", "josipa", "nikola", "vinko", "filipa"};
        String[] completion = {"josipa", "filipa", "marina", "nikola"};
        System.out.println(solution(participant, completion));
    }
    public static String solution(String[] participant, String[] completion) {
        String answer = "";
        
        HashMap<String, Integer> tickets = new HashMap();
        for(String name : participant) tickets.put(name, tickets.getOrDefault(name, 0)+1);
        for(String name : completion) tickets.put(name, tickets.get(name)-1);
        
        for(String name : tickets.keySet()) {if(tickets.get(name) != 0) answer = name; break; }
        
        return answer;
    }
}

*다른 분들의 코드를 참고하여 작성했습니다

profile
CS 메모장

0개의 댓글