반응형
https://programmers.co.kr/learn/courses/30/lessons/42576
코딩테스트 연습 - 완주하지 못한 선수
수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수
programmers.co.kr
import java.util.*;
class Solution {
public String solution(String[] participant, String[] completion) {
String answer = "";
HashMap<String,Integer> hash = new HashMap<String,Integer>();
//HahMap에 참가한 사람을 put한다.
//key = 참가한사람명, value = 0 or 1
//HashMap은 key값이 같은 것을 put할때 value값을 새로운 value값으로 갱신한다.
//동명이인일경우 key값이 같기 때문에 value값을 갱신한다.
//갱신을 막기위해 getOrDefault를 쓴다.
//getOrDefault의 경우 key값이 존재하면 존재하는 key의 value값을 반환한다.
//key값이 존재하지않으면 두번째 파라미터값을 반환한다.
//모든 참가자들은 <참가자명,1> 값으로 HashMap에 들어가져있다.
//(단. 동명이인의 경우 참가자가 <참가자명,2> 값으로 들어간다.)
for(String arg : participant){
hash.put(arg, hash.getOrDefault(arg,0)+1);
}
//HashMap에 완주한 사람을 put한다.
//HashMap은 키값이 같으면 그 키값의 value값을 갱신한다.
//기존의 HashMap에 완주한 사람의 key, value값을 put한다.
//기존의 HashMap에 완주한 사람의 key가 존재하면 value값을 새로운 값(기존의 값 -1)으로 갱신한다.
for(String arg : completion){
hash.put(arg, hash.get(arg) - 1);
}
//완주를 완료한사람은 <참가자명, 0> 값으로 HashMap에 들어가져있다.
//완주를 하지 못한 사람은 <참가자명, 1> 값으로 HashMap에 들어가져있다.
for(String key : hash.keySet()){
//완주를 하지 못한 사람의 참가자명을 return 한다.
if(hash.get(key) != 0 ) return key;
}
return null;
}
}
반응형
'코딩테스트 > 프로그래머스 1단계' 카테고리의 다른 글
프로그래머스 1단계 - 2016년 (0) | 2021.04.22 |
---|---|
프로그래머스 1단계 - 3진법 뒤집기 (0) | 2021.04.21 |
프로그래머스 1단계 - 나누어 떨어지는 숫자 배열 (0) | 2021.04.19 |
프로그래머스 1단계 - 모의고사 (0) | 2021.04.18 |
프로그래머스 1단계 - K번째수 (0) | 2021.04.18 |