프로그래머스 LV.2 위장

래우기·2021년 11월 14일
1

프로그래머스 LV.2

목록 보기
2/6
post-thumbnail

1. 문제 링크

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

2. 풀이

  1. 간단하게 얼굴, 상의, 하의, 겉옷을 입는 경우의 수를 구하는 문제이다.
  2. 이를 위해 HashMap<String, Integer> hm 을 아래와 같이 구성했다.
    - Key : 옷의 종류 / Value : 옷의 수
  3. 옷의 수를 count 하기 위해 getOrDefualt 메소드를 사용했다.
  4. hm에서 value를 꺼낼 때 아예 안 입는 경우까지 고려하여 value에 1을 더하여 경우의 수를 구한다.
  5. 경우의 수 = 얼굴 수 X 상의 수 X 하의 수 X 겉옷 수 - 1 (아무것도 안 입는 경우)

3. 코드

import java.util.HashMap;

public class Solution {

    public int solution(String[][] clothes) {
        int answer = 1;
        HashMap<String, Integer> hm = new HashMap<>();
        // 옷 종류 별 가짓 수 map에 저장
        for (int i = 0; i < clothes.length; i++) {
            hm.put(clothes[i][1], hm.getOrDefault(clothes[i][1], 0) + 1);
        }
        // 경우의 수 구하기
        for (String key : hm.keySet()) {
            answer *= hm.get(key) + 1;
        }
        // 아무것도 안 입는 경우는 제외
        --answer;
        return answer;
    }
}

4. 채점 결과

5. 느낀 점

  1. 경우의 수를 구하는 간단한 문제였다.
  2. HashMap의 getOrDefault(key, key에 매핑된 value가 없는 경우) 는 자주 사용하게 된다.
    - key에 매핑된 value가 있는 경우는 value를 가져온다.
    - 없는 경우에는, default 값으로 설정된 값을 가져온다.
profile
지금 당장 시작해

0개의 댓글