https://school.programmers.co.kr/learn/courses/30/lessons/42578
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
- 코니는 각 종류별로 최대 1가지 의상만 착용할 수 있습니다. 예를 들어 위 예시의 경우 동그란 안경과 검정 선글라스를 동시에 착용할 수는 없습니다.
- 착용한 의상의 일부가 겹치더라도, 다른 의상이 겹치지 않거나, 혹은 의상을 추가로 더 착용한 경우에는 서로 다른 방법으로 옷을 착용한 것으로 계산합니다.
- 코니는 하루에 최소 한 개의 의상은 입습니다.
HashMap을 이용해서 의상 착용 부위의 개수를 저장해 놓고, keySet()을 이용하여 key들을 String 배열로 만들었다. 그리고 answer에 착용 부위의 개수 + 1(해당 부위에 아무것도 착용하지 않는 경우)를 곱해주고 answer를 출력할 때 -1(모두 착용하지 않은 경우)를 빼주어서 정답을 구했다.
예를 들어, 예시의 [["yellow_hat", "headgear"], ["blue_sunglasses", "eyewear"], ["green_turban", "headgear"]]의 경우
eyewear가 1개, headgear가 2개인데, 각각 착용하지 않는 경우를 하나 더해서 2 * 3 = 6 그리고 eyeweaer, headgear 모두 착용하지 않는 경우가 생기는데 최소 한 개의 의상은 입어야 하기 때문에 이 경우의 1을 빼주어 정답을 구한 것이다.
import java.util.HashMap;
class Solution {
public int solution(String[][] clothes) {
int answer = 1;
HashMap<String, Integer> map = new HashMap<>();
for (int i = 0; i < clothes.length; i++) {
if (map.containsKey(clothes[i][1])) {
map.put(clothes[i][1], map.get(clothes[i][1]) + 1);
} else {
map.put(clothes[i][1], 1);
}
}
String[] clothe = map.keySet().toArray(new String[0]);
for (int i = 0; i < map.size(); i++) {
answer *= map.get(clothe[i]) + 1;
}
return answer - 1;
}
}
'Programmers' 카테고리의 다른 글
[프로그래머스][JAVA]Lv. 2 - 다리를 지나는 트럭 (0) | 2023.05.15 |
---|---|
[프로그래머스][JAVA]Lv. 2 - 주식가격 (0) | 2023.05.07 |
[프로그래머스][JAVA]Lv. 2 - 전화번호 목록 (0) | 2023.05.02 |
[프로그래머스][JAVA]Lv. 2 - n진수 게임 (1) | 2023.04.27 |
[프로그래머스][JAVA]Lv. 2 - 파일명 정렬 (0) | 2023.04.21 |