CodingTEST
[프로그래머스] 의상 (JAVA)
경걍
2024. 1. 20. 22:07
반응형
프로그래머스 - [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;
}
}
반응형