의상 (자바)

김재현·2023년 12월 22일
0

알고리즘 풀이

목록 보기
65/89

문제

정답 풀이

import java.util.HashMap;
import java.util.Map;

class Solution {
    public int solution(String[][] clothes) {
        int answer = 1;
     
        // 확통문제인가
        // (종류별 개수+1)을 서로 모두 곱한다음 -1 하면 return

        // 종류, 개수 맵
        Map<String, Integer> map = new HashMap<>();
        
        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)을 서로 모두 곱한다음 -1 라는게 눈에 보였다.
10년 전 고등학생 때 풀었던 확률과통계의 nCm 같은게 떠오르기도 하며...

아무튼 Map에 종류와 개수를 넣어놓고 그것들을 모두 곱해서 경우의 수를 구해서 풀이했다.

다른 사람 풀이

import java.util.HashMap;
import java.util.Iterator;
class Solution {
    public int solution(String[][] clothes) {
        int answer = 1;
        HashMap<String, Integer> map = new HashMap<>();
        for(int i=0; i<clothes.length; i++){
            String key = clothes[i][1];
            if(!map.containsKey(key)) {
                map.put(key, 1);
            } else {
                map.put(key, map.get(key) + 1);
            }
        }
        Iterator<Integer> it = map.values().iterator();
        while(it.hasNext()) {
            answer *= it.next().intValue()+1;
        }
        return answer-1;
    }
}

이분도 map을 이용해서 풀이했다.

나는 map의 entrySet를 통해 접근했지만 여기서는 Iterator를 사용했다는 것이다.
이런게 있었구나! 나도 다음에 사용해봐야겠다.

Iterator

Iterator는 Java에서 컬렉션 객체를 순회하고 각 요소에 접근하기 위한 인터페이스입니다.
이 인터페이스는 java.util 패키지에 속해 있습니다.

Iterator를 사용하면 컬렉션의 요소를 반복(iterate)하면서 접근 가능하다. 일반적으로 배열이나 리스트와 같은 데이터 구조에서 사용되며, 컬렉션의 내부 구조를 알 필요 없이 각 요소에 접근할 수 있다.

선언 방법

Iterator<Type> iterator = collection.iterator();

주요 메서드

  • boolean hasNext(): 다음 요소가 존재하는지 여부를 확인
  • E next(): 다음 요소를 반환
  • void remove(): 현재 요소를 제거
profile
I live in Seoul, Korea, Handsome

0개의 댓글