[문제]
https://programmers.co.kr/learn/courses/30/lessons/42578
코딩테스트 연습 - 위장 | 프로그래머스
programmers.co.kr
[풀이방법]
의상 이름말고 개수로 생각합니다.
즉, HashMap은 <의상종류, 해당 의상종류의 개수> 이렇게 정의합니다.
이제 주어진 이차원 문자열 배열을 탐색하면서 해당 의상 종류에 맞는 키가 존재하면 그 키에 대응되는 value의 값을 1만큼 증가하고
존재하지 않으면 해당 키를 생성하고 값으로 1을 넣어줍니다.
이후에는 경우의 수를 구합니다. (경우의 수 공식 = 따로 발생하는 사건의 경우의 수 (m + n) / 동시에 발생하는 사건의 경우의 수 (m * n))
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Collection;
class Solution {
public int solution(String[][] clothes) {
int answer = 0;
//의상 이름, 의상 종류 -> 같은 종류끼리는 중복되지 않도록 한다.
//의상 종류가 같은 것들끼리 분류한다??
HashMap<String, Integer> hash = new HashMap<String, Integer>();
answer = 1;
for (String[] s : clothes) {
if (!hash.containsKey(s[1])) {
//해당 의상 종류를 키로 갖고 있지 않는 경우 -> 새로 생성해줌
}
else {
//기존 의상 개수에 추가
}
}
for (Integer value : hash.values()) {
System.out.println(value);
answer *= (value + 1);
}
return answer-1;
}
}
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
|
'Programmers > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 조이스틱 (5) | 2019.08.14 |
---|---|
[프로그래머스] 큰 수 만들기 (0) | 2019.08.14 |
[프로그래머스][JAVA] 전화번호 목록 (0) | 2019.07.04 |
[프로그래머스][JAVA] 다리를 건너는 트럭 (0) | 2019.07.04 |
[프로그래머스][JAVA] 124 나라의 숫자 (0) | 2019.06.24 |