본문 바로가기

알고리즘

프로그래머스 - 위장

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

 

프로그래머스

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

programmers.co.kr

프로그래머스 위장 문제를 풀이했습니다.

음.. 문제를 보자마자 뭔가 경우의 수를 구할 수 있는 수학적인 공식을 세우고 풀어야겠다라는 생각을 했습니다.

(a+1)*(b+1)*(c+1···· -1 을 하게되면 정답을 구할 수 있더라구요.

그리고 문제는 해시맵을 활용해서 풀었습니다. 해시맵의 getOrDefault함수의 쓰임새가 정말 좋더군요!

import java.util.HashMap;

class Solution {
        public int solution(String[][] clothes) {
            int answer = 1;
            HashMap<String, Integer> hashMap = new HashMap<>();

            for(int i=0; i<clothes.length; i++){
                hashMap.put(clothes[i][1], hashMap.getOrDefault(clothes[i][1],0)+1);
            }

            for(String s : hashMap.keySet()){
                answer = answer *(1+ hashMap.get(s));
            }
            
            return answer-1;
        }
    }