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

조예빈·2024년 7월 2일
0

Coding Test

목록 보기
28/138

https://school.programmers.co.kr/learn/courses/30/lessons/42576#
hashmap에서의 value값을 가져오지 않고, num이라는 변수를 선언하여 1씩 증가시키는 로직을 시도하였었기 때문에 문제 푸는 시간이 조금 소요되었다 ㅠㅠ

import java.util.*;

class Solution {
    public String solution(String[] participant, String[] completion) {
        int p = participant.length;
        int c = completion.length;
        //마라톤에 참여한 선수 : participant
        //완주한 선수 : completion
        //완주하지 못한 선수 return
        //HashMap을 이용하여 선수의 이름을 key값으로, 인원수를 value값으로 설정
        HashMap<String, Integer> map = new HashMap<>();
        //for문을 돌며 participant 배열에 있는 이름을 key값으로 설정
        for(int i=0; i<p; i++){ //참여한 선수 넣기
            if(map.containsKey(participant[i])){ //중복되는 값이 있으면 value + 1
                map.put(participant[i], map.get(participant[i])+1);
            }else{ //중복되는 값이 없으면 1
                map.put(participant[i],1);
            }
        }
        for(int i=0;i<c;i++){ //map에서 참여한 선수 빼기 -> 1씩 감소 하도록 update해야 함
            if(map.containsKey(completion[i])){
                map.put(completion[i], map.get(completion[i])-1);
            }
        }
        for(int i=0;i<p;i++){
            if(map.get(participant[i]) != 0){ //값이 0이 아니면 -> 사람이 한 명 이상 존재하면
                return participant[i];
            }
        }
        return null;
    }
}

profile
컴퓨터가 이해하는 코드는 바보도 작성할 수 있다. 사람이 이해하도록 작성하는 프로그래머가 진정한 실력자다. -마틴 파울러

0개의 댓글