99클럽 코테 스터디 6일차 TIL - [프로그래머스] 의상 (Java)

seri·2024년 7월 28일
0

코딩테스트 챌린지

목록 보기
31/62

📌 오늘의 학습 키워드

[프로그래머스] 의상 (Java)
https://school.programmers.co.kr/learn/courses/30/lessons/42578

📌 공부한 내용 본인의 언어로 정리하기

문제 탐색하기

입력 : String[][] clothes (1 ≤ clothes.length ≤ 30)
출력 : 서로 다른 옷의 조합의 수

가능한 시간복잡도

O(n)

알고리즘 선택

해시

📌 코드 설계하기

  1. HashMap을 사용해 각 의상의 종류별 개수를 센다.
  2. 모든 조합의 수를 계산한다.
  3. 아무 옷도 입지 않는 경우를 제외해 결과를 출력한다.

📌 오늘의 회고

어떤 문제가 있었고, 나는 어떤 시도를 했는지

없음

어떻게 해결했는지

없음

무엇을 새롭게 알았는지

getOrDefault는 주어진 키에 매핑된 값을 반환하고, 해당 키가 존재하지 않으면 기본값(두번째 인수)을 반환한다.

내일 학습할 것은 무엇인지

해시

📌 정답 코드

import java.util.HashMap;

class Solution {
    public int solution(String[][] clothes) {
        HashMap<String, Integer> clothesMap = new HashMap<>();
        
        // 각 의상의 종류별 개수를 센다.
        for (String[] cloth : clothes) {
            String type = cloth[1];
            clothesMap.put(type, clothesMap.getOrDefault(type, 0) + 1);
        }
        
        int combinations = 1;
        
        // 모든 조합의 수를 계산한다.
        for (int count : clothesMap.values()) {
            combinations *= (count + 1);
        }
        
        // 아무 옷도 입지 않는 경우를 제외한다.
        return combinations - 1;
    }
}
profile
꾸준히 정진하며 나아가기

0개의 댓글