본문 바로가기

CodingTEST

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

반응형

프로그래머스 - [Level 2]  의상 

 

프로그래머스

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

programmers.co.kr


문제 분석

 

  • 매일 다른 옷을 입고 싶은 코니
  • 그래서 매번 추가로 하나를 더 입던가, 벗던가, 다른 걸로 갈아입어야한다.
    • 모두 벗으면 안된다. 하루에 최소 한 개의 의상은 입습니다.
  • 옷의 종류와 이름이 적힌 이차원 배열이 주어진다.
    • String[][] clothes - clothes[n][0] : 이름 | clothes[n][1] : 종류
  • 서로 다른 옷의 조합의 수를 return 해라

해결 키 포인트

 

  • 옷의 이름은 상관 없다. 종류 별로 몇 개의 옷이 존재하는지 알면 된다.
  • 이름으로 구분하면 TreeMap을 구현한다. (TreeMap<String, Integer> : key-종류 , value-개수)
  • 해당 종류를 안입는 것을 고려하기 위해 마지막에 모든 종류의 개수를 하나씩 증가시킨다.
    • 맵에 담겨진 (value+1)를 모두 곱한다.
  • 최종 계산 시, 모든 종류를 안입는 것까지 고려해야한다. (-1)

코드

 

import java.util.TreeMap;

class Solution {
    public int solution(String[][] clothes) {
        TreeMap<String, Integer> map = new TreeMap<>();

        for (String[] clothe : clothes) {
            String kind = clothe[1];
            if (map.containsKey(kind)) {
                map.put(kind, map.get(kind) + 1);
            } else {
                map.put(kind, 1);
            }
        }

        int answer = 1;
        for (int n : map.values()) {
            answer *= (n+1);
        }

        return answer - 1;
    }
}
반응형

'CodingTEST' 카테고리의 다른 글

[프로그래머스] 프로세스 (JAVA)  (0) 2024.02.10
[프로그래머스] 기능개발 (JAVA)  (1) 2024.01.28
[백준 1991] 트리 순회(JAVA)  (0) 2024.01.16
[백준 1932] 정수 삼각형(JAVA)  (0) 2024.01.16
[백준 1629] 곱셈 (JAVA)  (0) 2024.01.15