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

haeun·2024년 3월 14일
0

Algorithm

목록 보기
1/3

📌 Problem : https://school.programmers.co.kr/learn/courses/30/lessons/42576



👉 Approach

사용된 변수에 대한 설명

  • map : 선수의 이름과 중복 횟수를 카운팅
  • partPlayer : 참여자 이름
  • comPlayer : 완주자 이름

주요 로직

  • 동명이인이 2이상이 될 수 있다는 부분을 고려하며 이름과 중복 횟수를 각각 key, value로 지정해 HashMap으로 횟수를 관리합니다.
  • 첫번째 for문으로 참여자를 담으며 이미 존재하는 참여자는 getOrDefault를 이용해 기존 value에 1++합니다.
  • 두번째 for문에서는 횟수를 차감하는데 이 때는 담아놓은 참여자와 꺼낸 완주자를 key로 비교합니다.



✔️ Code

import java.util.HashMap;

class Solution {
    public String solution(String[] participant, String[] completion) {

        // 새로운 HashMap 생성
        HashMap<String, Integer> map = new HashMap<>();
        
        // 참여자를 담고 중복 횟수에 따라 증가
        for(String partPlayer: participant){
            map.put(partPlayer,map.getOrDefault(partPlayer,0) +1);
        }
        
        // 완주자로 조회하여 횟수 차감
        for(String comPlayer:completion){
            map.put(comPlayer,map.get(comPlayer) -1);
        }
        
        // 횟수가 1 이상인 key를 찾아 반환 
        for(String player: participant){
            if(map.get(player) > 0) return player;
        }
        
        return null;
    }
}
profile
환영합니다 :) 이 곳은 개인 공부를 정리하고 창의적으로 활용하기 위한 제 2의 전두엽으로 활용되고 있으며, 오류에 대한 피드백은 댓글로 남겨주시면 감사하겠습니다.

0개의 댓글