[Java] 알고리즘 풀이 - 기초 문제

이해찬·2023년 6월 17일
0

항해일지

목록 보기
10/35

23.06.17 - D+17, 알고리즘 기초 문제 map을 활용

기록양식 (TIL)
1. 사용 개념
2. 의문점 or 문제
3. 시도해 본 것들(+응용) or 삽질
4. 해결
5. 알게 된 점(회고)

1. Hashmap을 사용한 배열

HashSet은 중복을 허용하지 않는 데이터 구조. 즉, 동일한 이름을 가진 참가자가 여러 명 있을 경우 HashSet은 그들 중 하나만 저장하기 때문에 HashSet을 사용하면 동일한 이름을 가진 참가자를 구별불가

반면에 HashMap은 키-값 쌍을 저장하는 데이터 구조. 이 경우, 참가자의 이름을 키로 사용하고, 해당 이름의 참가자 수를 값으로 사용 가능. 이렇게 하면 동일한 이름을 가진 참가자를 구별

2. 완주하지 못한 선수

3.풀이

class Solution {
    public String solution(String[] participant, String[] completion) {
        String answer = "";
        
        Set<String> str = new HashSet<String>();
        
        for(String s : completion){
            str.add(s);
        }
        
       for(int i=0; i<participant.length; i++){
           if(!str.contains(participant[i])){
               answer = participant[i];
           }
       }
        
        return answer;
    }
}

일전에 풀었던 형식의 set 을 사용해서 풀려고 했으나 , 동명이인 구별 불가

💻 해결

import java.util.*;

class Solution {
    public String solution(String[] participant, String[] completion) {
         String answer = "";
        HashMap<String, Integer> map = new HashMap<>();
        for (String player : participant) 
            map.put(player, map.getOrDefault(player, 0) + 1);
        for (String player : completion) 
            map.put(player, map.get(player) - 1);

            Iterator<Map.Entry<String, Integer>> iter = map.entrySet().iterator();

        while(iter.hasNext()){
            Map.Entry<String, Integer> entry = iter.next();
            if (entry.getValue() != 0){
                answer = entry.getKey();
                break;
            }
        }
        return answer;
    }
}
    

hashmap의 개념과 구조를 파악하지 못해, 구글링과 검색을 통해 작성 > 구조만 먼저 이해하는 식으로 진행

프로그래머스 - 다른 풀이

profile
디자인에서 개발자로

0개의 댓글