[프로그래머스/Java] 의상

Yujin·2025년 6월 19일

CodingTest

목록 보기
42/51

문제

https://school.programmers.co.kr/learn/courses/30/lessons/42578


접근 방식

  1. 의상의 종류별로 HashMap을 사용해 각 종류의 의상 수를 저장
  2. 의상 종류가 처음 등장할 경우 1(아무것도 입지 않는 경우 포함)을 기본값으로 설정
  3. 그 이후 등장할 때마다 1씩 더함
<의상 조합>
각 의상 종류마다 의상 수 + 1 (해당 종류의 의상을 입지 않는 경우 포함)을 곱함
  1. 모든 종류에 대해 곱을 구한 후 1을 뺌 -> 아무것도 입지 X

map.getOrDefault

특정 키에 해당하는 값을 가져오되, 해당 키가 맵에 존재하지 않을 경우 기본값을 반환

map.getOrDefault(Object key, V defaultValue)
  • key: 찾고자 하는 키.
  • defaultValue: 만약 맵에 해당 키가 없을 경우 반환할 기본값.

동작 방식

  1. map.get(key)를 호출해서 해당 키가 존재하면 그 값을 반환
  2. 만약 해당 키가 맵에 없으면 기본값(defaultValue)를 반환

나의 코드

import java.util.*;

class Solution {
    public int solution(String[][] clothes) {
        int answer = 1;
        HashMap<String, Integer> map = new HashMap<>();
        
        // 옷의 종류별로 카운트
        for(int i = 0; i < clothes.length; i++){
            // map에 옷의 종류를 키로 저장, 기본값은 1 (착용하지 않는 경우 포함)
            map.put(clothes[i][1], map.getOrDefault(clothes[i][1], 1) + 1);
        }
        
        // 모든 의상 종류의 조합을 계산
        for(Integer value : map.values())  {
            answer *= value;
        }
       
        // 아무것도 입지 않는 경우를 제외해야 하므로 -1
        return answer - 1;
    }
}

0개의 댓글