본문 바로가기
JAVA/프로그래머스

[Lv.2] 프로그래머스 - 의상 : Java

by ♡˖GYURI˖♡ 2024. 5. 24.
 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

 

이해하기

처음에 시도했던 방식은 조합처럼 푸는 것이었다.

headgear가 2개, eyewear가 1개인 예시를 가지고 설명하자면,

headgear의 개수 2 + eyewear의 개수 1개 + headwear * eyewear의 조합 2개 = 5개

같은 식으로 풀이하려 하였다.

 

하지만 종류가 여러개가 되니 바로 fail...

 

참고한 블로그⬇️

 

[프로그래머스] 의상 (자바)

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 코

jjini-3-coding.tistory.com

 

 

문제풀이

import java.util.*;
import java.util.Map.*;

class Solution {
    public int solution(String[][] clothes) {
        int answer = 1;
        Map<String, Integer> map = new HashMap<>();
        
        for (String[] cloth : clothes) {
            map.put(cloth[1], map.getOrDefault(cloth[1], 1) + 1);
        }
        
        for (Entry<String, Integer> entry : map.entrySet()) {
            answer *= entry.getValue();
        }
        
        
        return answer - 1;
    }
}

 

너무 쉬운 방법이 있어서 충격

전체 의상 종류에 안 입는 경우를 넣는 것이다.

 

이를 map에 전부 저장하고 전부 곱한 값에서 {안입음, 안입음}과 같이 불가능한 경우 1개만 빼주는 것이다...!