알고리즘/프로그래머스
[프로그래머스] 완주하지 못한 선수 - 자바
binghe819
2020. 7. 3. 19:00
https://programmers.co.kr/learn/courses/30/lessons/42576
코딩테스트 연습 - 완주하지 못한 선수
수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수��
programmers.co.kr
1. 풀이
Hash를 이용하는 문제이다. Hash를 기본 사용법을 알 수 있는 예제인듯 싶다.
동명이인만 잘 생각해서 풀이하면 될듯 하다.
다른 분들의 풀이를 보니, Hash를 사용하지 않고 정렬로 풀이하시는 분들도 계신듯 하다.
2. 코드
import java.util.*;
class Solution {
public String solution(String[] participant, String[] completion) {
String answer = "";
HashMap<String, Integer> record = new HashMap<String, Integer>();
for(String com : completion){
// 아직 완주한 적 없는 선수라면
if(record.get(com) == null){
record.put(com, 1);
} else { // 동명이인으로 완주한 적 있는 선수라면 +1해주기
int tmp = record.get(com)+1;
record.put(com, tmp);
}
}
for(String part : participant){
// 만약 완주한 적 없는 선수라면
if(record.get(part) == null || record.get(part) == 0){
answer = part;
break;
}
// 완주한 선수라면 -1해주기
int tmp = record.get(part)-1;
record.put(part, tmp);
}
return answer;
}
}