원하는 것은 뭐든지

99클럽 코테 스터디 6일차 TIL , 의상 본문

개발/문제풀이

99클럽 코테 스터디 6일차 TIL , 의상

댕로그😏 2024. 7. 27. 21:21
반응형

문제

 

풀이

의상의 수는 1~30개 종류 또한 마찬가지이다.

같은 이름의 의상은 존재하지 않는다.

 

코니는 옷을 안입더라도 안경이나 헤드기어만 착용하고도 밖으로 나갈 수 있다.

하나도 입지 않는 경우는 없지만 한 가지만 착용해도 된다.

 

그렇게 생각하면 옷의 이름은 사실 상관이 없고 종류 당 개수만 생각하면 경우의 수를 찾을 수 있다.

제출 1 - 정답

Map에 key를 종류로 놓고 종류당 개수를 체크한다.

각 개수마다 1을 더해서 곱해주고 아무것도 안 입을 경우 한 가지만 빼준다.

 

예를 들어 다음과 같은 종류의 옷이 있을 경우

 

모자 - 빨강비니, 파란캡, 검정 페도라 (3개)

양말 - 빨강양말, 발가락 양말 (2개)

셔츠 - 폴로셔츠, 유니클로 셔츠, 오라리 셔츠 (3개)

 

(모자 쓰는 경우 세 가지 + 모자 안 쓰는 경우 한 가지) * (양말 신는 경우 두 가지 + 맨발 한 가지) * (셔츠 세 가지 + 안 입는 한 가지)를 계산해서 나오는 경우의 수에서 모두 안 입는 경우 한 가지만 빼주면 된다.

 

import java.util.*;
class Solution {
    public int solution(String[][] clothes) {
        int answer = 1;
        Map<String,Integer> type = new HashMap<>();
        
        for(int i=0;i<clothes.length;i++){
            int n = type.getOrDefault(clothes[i][1], 0);
            type.put(clothes[i][1],++n);
        }
        
        for(int n : type.values()){
            answer *= n+1;
        }
        
        answer -= 1;
        
        return answer;
    }
}

 

 

TIL

  • 문제를 파악하고 풀이 방법을 생각하고 풀이를 작성하는 중간중간 시간이 오래 걸리는 것을 확인 했다. 이 부분에 대해 고민이 필요하다. 클럽장이나 다른 사람에게 질문해봐야겠다.
  • 조합 공부를 더 해야 한다.
반응형
Comments