본문 바로가기
📖 Algorithm/코딩테스트

2022.05.09 「해시 Lv.2」

by GroovyArea 2022. 5. 9.
요새 매일매일 코테를 준비하며 프로그래머스 문제를 풀고 있다. 처음엔 완전히 막혔지만 그래도 이젠 어느 정도 풀이가 떠오르긴 한다. 한 가지 아쉬운 점은 생각보다 클래스마다 다양한 메서드를 가지고 있고 이를 잘 알고 활용해야 한다는 점이다. 
제일 많이 나오는 유형인 해시 문제를 마주하고 문제를 풀기 위해 활용할 메서드를 검색해서 이를 활용하여 문제를 풀었지만 한번 정리해볼 만한 가치가 있다고 생각이 들어서 이렇게 정리하게 되었다.

 

문제 설명

위장이라는 문제인데,

옷의 종류와 옷의 이름으로 이루어진 2차원 배열을 가지고

그 경우의 수를 구하는 문제이다. 매일 옷을 다르게 입어야 하고,

하루에 옷 1개는 무조건 입는 조건이다. 해시를 이용해 풀란다.

 

 

풀이

 public int solution(String[][] clothes) {
        Map<String, Integer> map = new HashMap<>();
        int answer = 1;
        
        for (int i = 0; i < clothes.length; i++) {
            map.put(clothes[i][1], map.getOrDefault(clothes[i][1], 0) + 1);
        }
        
        for (Map.Entry<String,Integer> entry : map.entrySet()) {
            answer *= entry.getValue() + 1;
        }    
        
        return answer - 1;
    }
  1. 배열 길이만큼 반복을 하며 map에 엔트리를 넣어준다. (키에 옷, 값에 숫자)
  2. 값의 개수만큼 반복을 하며 정답에 곱해주며 연산을 한다.
  3. 옷 1개는 무조건 입어야 하기에 -1을 해준다.

구글링을 하며 map 관련 메서드들을 찾아가며 문제를 풀었지만, 해당 메서드들을 확실히 정리해야 나중에 까먹지 않을 것 같아 정리를 해보겠다.

 

getOrDefault(Object key, V DefaultValue)
매개변수 : 

key : 키

defaultValue : 키에 매핑된 값이 없는 경우 반환되는 기본 값

=> 찾는 key가 존재하면 매핑된 값을 반환하고 없을 경우 default 값이 반환된다.

 

Map.Entry

Map 형태의 인터페이스를 만드는데 사용

Map을 이용해 반복하거나 인터페이스 용도로 사용하거나 Stream 사용 시 Map 형식 데이터 처리가 필요할 때 사용한다.

 

 

public Set<Map.Entry<K,​V>> entrySet()

해당 map의 key, value를 가지는 Set 객체를 리턴

반복문에서 주로 사용 

keyset()도 있는데 이는 key만 얻어올 경우 사용한다.

내 코드에서는 엔트리도 필요하므로 entrySet()을 사용했다.

 

참조: https://hianna.tistory.com/573

 

[Java] HashMap key, value 전체 출력하기

map.entrySet() map.keySet(), mep.get() map.keyValue() - value만 가져오기 Iterator forEach (Java 8 이후) 1. map.entrySet() public Set > entrySet() map.entrySet() 메소드는 해당 map의 key와 value를..

hianna.tistory.com

참조 : https://wakestand.tistory.com/649

 

자바 Map.Entry 사용방법 정리

자바에서 Map.Entry 는 Map 형태의 인터페이스를 만드는데 사용하는데 실제 사용은 위와 같이 Map을 For 문에서 돌려줄 경우 인터페이스 용도로 사용하거나 혹은 스트림(Stream) 사용 시 Map 형식의 데이

wakestand.tistory.com

 

반응형

'📖 Algorithm > 코딩테스트' 카테고리의 다른 글

2022.05.24 「Lv.3 입국심사」  (0) 2022.05.24
2022.05.18 「Lv.2 Heap 더 맵게」  (0) 2022.05.18
2022.05.17 「Lv.2 프린터」  (0) 2022.05.17
2022.05.16 「Lv.2 카펫」  (0) 2022.05.16
2022.05.12 「LV2 소수 찾기」  (0) 2022.05.12