위장은 예전에 한번 풀었던 문제였다.. 쉬워서 도전해봤던 문제..
우선 HashMap<String, Integer>를 생성한다. 주어진 입력은 2차원 배열의 String이다. 그 중, 항상 clothes[i][1]번째에는 의상의 카테고리가 주어진다. 이 카테고리를 HashMap에 put하여, 중복된 카테고리가 나올 때 마다 Integer를 1++ 해준다.
그 후, 경우의 수를 구하는 방법으로 answer값을 계산 후 return해주면 된다.
package Lv_2;
import java.util.HashMap;
public class 위장 {
public static int solution(String[][] clothes) {
int answer = 1;
HashMap<String, Integer> box = new HashMap<>();
for (int i = 0; i < clothes.length; i++) {
box.put(clothes[i][1], box.getOrDefault(clothes[i][1], 0) + 1);
}
for (int cnt : box.values()) {
answer *= cnt;
}
return answer - 1;
}
public static void main(String[] args) {
String[][] clothes = new String[][]{{"yellow_hat", "headgear"}, {"blue_sunglasses", "eyewear"}, {"green_turban", "headgear"}};
int result = solution(clothes);
}
}
'Java > Programmers' 카테고리의 다른 글
[Lv.2]기능개발 (0) | 2023.02.17 |
---|---|
[Lv.2]n^2 배열 자르기 (0) | 2023.02.15 |
[Lv.2]튜플 (0) | 2023.02.13 |
[Lv.2]행렬의 곱셈 (0) | 2023.02.12 |
[Lv.2]괄호 회전하기 (0) | 2023.02.11 |
댓글