1. ๋ฌธ์ ์ค๋ช
์ฝ๋๋ ๋งค์ผ ๋ค๋ฅธ ์ท์ ์กฐํฉํ์ฌ ์
๋๊ฒ์ ์ข์ํฉ๋๋ค.
์๋ฅผ ๋ค์ด ์ฝ๋๊ฐ ๊ฐ์ง ์ท์ด ์๋์ ๊ฐ๊ณ , ์ค๋ ์ฝ๋๊ฐ ๋๊ทธ๋ ์๊ฒฝ, ๊ธด ์ฝํธ, ํ๋์ ํฐ์ ์ธ ๋ฅผ ์ ์๋ค๋ฉด ๋ค์๋ ์ ์ฒญ๋ฐ์ง๋ฅผ ์ถ๊ฐ๋ก ์ ๊ฑฐ๋ ๋๊ทธ๋ ์๊ฒฝ ๋์ ๊ฒ์ ์ ๊ธ๋ผ์ค๋ฅผ ์ฐฉ์ฉํ๊ฑฐ๋ ํด์ผํฉ๋๋ค.
์ข ๋ฅ | ์ด๋ฆ |
์ผ๊ตด | ๋๊ทธ๋ ์๊ฒฝ, ๊ฒ์ ์ ๊ธ๋ผ์ค |
์์ | ํ๋์ ํฐ์ ์ธ |
ํ์ | ์ฒญ๋ฐ์ง |
๊ฒ์ท | ๊ธด ์ฝํธ |
- ์ฝ๋๋ ๊ฐ ์ข ๋ฅ๋ณ๋ก ์ต๋ 1๊ฐ์ง ์์๋ง ์ฐฉ์ฉํ ์ ์์ต๋๋ค.
- ์๋ฅผ ๋ค์ด ์ ์์์ ๊ฒฝ์ฐ ๋๊ทธ๋ ์๊ฒฝ๊ณผ ๊ฒ์ ์ ๊ธ๋ผ์ค๋ฅผ ๋์์ ์ฐฉ์ฉํ ์๋ ์์ต๋๋ค.
- ์ฐฉ์ฉํ ์์์ ์ผ๋ถ๊ฐ ๊ฒน์น๋๋ผ๋, ๋ค๋ฅธ ์์์ด ๊ฒน์น์ง ์๊ฑฐ๋,
- ํน์ ์์์ ์ถ๊ฐ๋ก ๋ ์ฐฉ์ฉํ ๊ฒฝ์ฐ์๋ ์๋ก ๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก ์ท์ ์ฐฉ์ฉํ ๊ฒ์ผ๋ก ๊ณ์ฐํฉ๋๋ค.
- ์ฝ๋๋ ํ๋ฃจ์ ์ต์ ํ ๊ฐ์ ์์์ ์ ์ต๋๋ค.
์ฝ๋๊ฐ ๊ฐ์ง ์์๋ค์ด ๋ด๊ธด 2์ฐจ์ ๋ฐฐ์ด clothes๊ฐ ์ฃผ์ด์ง ๋ ์๋ก ๋ค๋ฅธ ์ท์ ์กฐํฉ์ ์๋ฅผ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ์ฌํญ
- clothes์ ๊ฐ ํ์ [์์์ ์ด๋ฆ, ์์์ ์ข ๋ฅ]๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
- ์ฝ๋๊ฐ ๊ฐ์ง ์์์ ์๋ 1๊ฐ ์ด์ 30๊ฐ ์ดํ์ ๋๋ค.
- ๊ฐ์ ์ด๋ฆ์ ๊ฐ์ง ์์์ ์กด์ฌํ์ง ์์ต๋๋ค.
- clothes์ ๋ชจ๋ ์์๋ ๋ฌธ์์ด๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
- ๋ชจ๋ ๋ฌธ์์ด์ ๊ธธ์ด๋ 1 ์ด์ 20 ์ดํ์ธ ์์ฐ์์ด๊ณ ์ํ๋ฒณ ์๋ฌธ์ ๋๋ '_' ๋ก๋ง ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
์ ์ถ๋ ฅ ์ & ์ค๋ช
2. ์ ๊ทผ๋ฐฉ์
2-1. ๋ฌธ์ ๋จ์ํ
- ์์ 1 ๊ธฐ์ค์ผ๋ก ์๊ฐ ํด ๋ณด์.
- ๋ฐฐ์ด์ ๋ด๊ธด ์์์ ์ด 3๊ฐ์ง๋ก ํค๋๊ธฐ์ด 2์ข
, ์์ด์จ์ด 1์ข
์ด๋ค.
- headwaer : yellow hat, green turban ์ผ๋ก 2๊ฐ
- eyewear : blue sunglasses 1๊ฐ
items | count |
headgear | 2 |
eyewear | 1 |
ํค๋์จ์ด์ ์์ด์จ์ด๋ฅผ ์ฐฉ์ฉํ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ์๊ฐ ํด ๋ณด๋ฉด
โ
headgear (3๊ฐ์ง)
- yellow hat ์ฐฉ์ฉ
- green turban ์ฐฉ์ฉ
- ์ฐฉ์ฉ ์ ํจ
โ
eyewear (2๊ฐ์ง)
- blue sunglasses
- ์ฐฉ์ฉ ์ ํจ
โ
์ ๋ ๊ฐ์ง๋ฅผ ์์ดํ
์ ์กฐํฉํด์ ์ฐฉ์ฉํ๋ ๊ฒฝ์ฐ์ ์๋ 2*3 = 6๊ฐ์ง
- yellow hat
- green turban
- blue sunglasses
- yellow hat + blue sunglasses
- green turban + blue sunglasses
- ์๋ฌด๊ฒ๋ ์ฐฉ์ฉ ์ํจ(์ ์ธ๋์)
ํ์ง๋ง ์๋ฌด๊ฒ๋ ์ฐฉ์ฉํ์ง ์๋ ๊ฒฝ์ฐ๋ ์ ์ธํด์ผ ํ๊ธฐ ๋๋ฌธ์ 2*3-1 = 5๊ฐ์ง๊ฐ ๋๋ค.
2-2. ํด๊ฒฐ๋ฒ
- ์ด์ฐจ์ ๋ฐฐ์ด์์ ๊ฐ ์์์ 1๋ฒ ์ธ๋ฑ์ค์ ์์ดํ
์ ์ข
๋ฅ๊ฐ ๋ด๊ฒจ ์์ผ๋ฏ๋ก
["yellow_hat", "headgear"], ["blue_sunglasses", "eyewear"], ["green_turban", "headgear"]
- ํด์๋งต์ <String, Integer> ํ์
์ผ๋ก ์ข
๋ฅ์ ๋ฑ์ฅํ์(count)๋ฅผ ๋งคํํด์ ์ง์ด ๋ฃ์ด ์ฃผ๋ฉด ๋๋ค.
- ์ด ๋ (๋
ธ๋ ๋ชจ์ + ์์
์) ๋ ๊ณ ๋ คํด์ผ ํ๊ธฐ ๋๋ฌธ์ ์ด๋ค ์์ดํ
์ ์ ์
๋ ๊ฒฝ์ฐ๋ฅผ ์๊ฐํด์ count์ +1์ฉ์ ํด ์ค๋ค.
- ์์ดํ
์ข
๋ฅ๋ณ ๋ฑ์ฅํ์๋ฅผ result ๋ณ์์ ๋์ ํ๋ฉด์ ๊ณฑํด์ค๋ค.
- result ๋ฆฌํดํ๊ธฐ ์ ์ ๋ชจ๋ ์ ์
๋ ๊ฒฝ์ฐ๋ ์ ์ธ ํด ์ฃผ์ด์ผ ํ๋ฏ๋ก ๊ฒฐ๊ณผ๊ฐ์์ -1์ ํด์ค๋ค.
3. ๋ฌธ์ ํ์ด
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
class Solution {
public int solution(String[][] clothes) {
// 1. ์์ ์ข
๋ฅ, ์นด์ดํธ ๋ด์ HashMap ์ ์ธ
HashMap<String, Integer> map = new HashMap<>();
// 2. ๊ฒฐ๊ณผ๊ฐ ๋ด์ ๋ณ์ ์ ์ธ
int result = 1;
// 3. clothes ๋ฅผ ์ํํ๋ฉด์ ์์ ์ข
๋ฅ ๊ฐ์ ธ์์ ํด์ํ
์ด๋ธ์ ๋ฃ๊ธฐ
for (String[] clothe : clothes){
String type = clothe[1];
map.put(type, map.getOrDefault(type,0)+1);
}
// 4. ํด์๋งต์ value(count)๋ง ์ํํ๊ธฐ
Iterator<Integer> iter = map.values().iterator();
// 5. ๋ค์ ์์์ ๊ฐ์ด ์์ผ๋ฉด value ๊ฐ์ ธ์์ 1๋ํ ํ result์ ๊ณฑํ๊ธฐ
while (iter.hasNext()){
result *= (iter.next().intValue()+1);
}
// 6. ๋ชจ๋ ์์
์ ๊ฒฝ์ฐ ์ ์ธํ๊ธฐ ์ํด ์ต์ข
๊ฐ์์ 1์ ๋นผ๊ณ ๋ฆฌํด
return result-1;
}
}
- 2์์ int result ๋ฅผ 1๋ก ์ ์ธํ ์ด์ ๋ ๋์ ๊ณฑ์ ํด ์ค๊ฑฐ๋ผ์ 0์ผ๋ก ํ๋ฉด ๊ณ์ 0๊ฐ์ด๊ธฐ ๋๋ฌธ์ด๋ค.
map.put(type, map.getOrDefault(type, 0) + 1);
map์ type ๊ฐ์ด ์์ผ๋ฉด 0์ผ๋ก ์ด๊ธฐํ, map์ type์ด ์ด๋ฏธ ์กด์ฌํ๋ฉด ๊ธฐ์กด ๊ฐ์์ 1์ ๋ํ ํ, ์ฆ๊ฐ๋ ๊ฐ์ผ๋ก ์
๋ฐ์ดํธํ๋ ๋ฉ์๋
Iterator next() ๋ฉ์๋
- ์ญํ : iter.next() ๋ฉ์๋๋ ๋ฐ๋ณต์์ ํ์ฌ ์์๋ฅผ ๋ฐํํ๊ณ , ๋ฐ๋ณต์์ ์์น๋ฅผ ๋ค์ ์์๋ก ์ด๋์์ผ์ฃผ๋ ์ญํ ์ ํจ. ์๋ฅผ ๋ค๋ฉด ์ฒซ ๋ฒ์งธ ํธ์ถ ํ ๋, ๋ฐ๋ณต์์ ์ฒซ ๋ฒ์งธ ์์๋ฅผ ๋ฐํํ๊ณ , ๋ค์ ํธ์ถ์์๋ ๋ ๋ฒ์งธ ์์๋ก ์ด๋ํจ.
- ์์ธ: ๋ง์ฝ ๋ ์ด์ ๋ฐ๋ณตํ ์์๊ฐ ์๋๋ฐ next()๋ฅผ ํธ์ถํ๋ฉด **NoSuchElementException**์ด ๋ฐ์ํจ. ์ด๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ์ผ๋ฐ์ ์ผ๋ก hasNext() ๋ฉ์๋๋ฅผ ํจ๊ป ์จ์ ๋ฐ๋ณต์์ ๋ ์ด์ ์์๊ฐ ๋จ์์์ง ์์ ๊ฒฝ์ฐ next()๋ฅผ ํธ์ถํ์ง ์๋๋ก ํด์ค๋ค.
4. ๋์ผ์ ํ ๋ฌธ์ (ํด์)
https://awesomepossum.tistory.com/271