본문 바로가기

코딩 테스트/문제

[완주하지못한 선수] getOrDefault, 컬렉션 프레임워크

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

 

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

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

programmers.co.kr

예전에 공부했던 코딩테스트 문제입니다.

 

복습할 겸 포스팅 ㄱㄱ

 

역시나 코린이인 저에겐 혼자풀기에는 어려웠던 문제입니다.

 

이 문제를 풀면서 공부했던 것은 컬렉션 프레임워크, entrySet(), keySet(), getOrDefault()

 

컬렉션 프레임워크의 핵심인터페이스

 List

 순서가 있는 데이터 집합

 데이터의 중복을 허용.

 예) 대기자 명단

 ArrayList, LinkedList, Stack, Vectior 등

 

 Set

 순서를 유지하지 않는 데이터의 집합,

 데이터의 중복을 허용하지 않음. 

 예) 양의 정수집합, 소수집합

 HashSet, TreeSet 등

 

Map

 키와 값이 쌍으로 이루어진 데이터의 집합

 순서는 유지되지 않음 

 키는 중복을 허용하지 않고, 값은 중복을 허용함

 예) 우편번호, 지역번호(전화번호)

 HashMap, TreeMap, Properties 등

   

Map의 entrySet(), keySet()

 entrySet() 메소드는 key, value의 값이 모두 필요할 때 사용

 keySet() 메소드는 key의 값만 필요할 때 사용

 

getOrDefault(Object key, V defaultValue)

 찾는 키가 존재한다면 찾는 키의 값을 반환하고, 키가 존재하지 않는다면 기본값을 반환하는 메소드

 

 

문제풀이 답

for(String player : participant) hm.put(player, hm.getOrDefault(player,0)+1); 

 

// participant(참가자) 배열의 값에 차례대로 +1을 해줍니다.

 

for(String player : completion) hm.put(player, hm.get(player)-1); 

 

// completion(완주자) 배열의 값에 다시 -1 을 해줍니다. 

 

// 그럼 participant와 completion에서 중복되는 값은 0 이되고

 

// key값을 이용해서 꺼냈을 때 0 이 아닌 사람은 완주하지 못한 사람입니다

 

 

끝~~~~~~~~~~~~~~~~