Level 2 210919
๋ฌธ์ ์ค๋ช
์คํ์ด๋ค์ ๋งค์ผ ๋ค๋ฅธ ์ท์ ์กฐํฉํ์ฌ ์
์ด ์์ ์ ์์ฅํฉ๋๋ค.
์๋ฅผ ๋ค์ด ์คํ์ด๊ฐ ๊ฐ์ง ์ท์ด ์๋์ ๊ฐ๊ณ ์ค๋ ์คํ์ด๊ฐ ๋๊ทธ๋ ์๊ฒฝ, ๊ธด ์ฝํธ, ํ๋์ ํฐ์
์ธ ๋ฅผ ์
์๋ค๋ฉด ๋ค์๋ ์ ์ฒญ๋ฐ์ง๋ฅผ ์ถ๊ฐ๋ก ์
๊ฑฐ๋ ๋๊ทธ๋ ์๊ฒฝ ๋์ ๊ฒ์ ์ ๊ธ๋ผ์ค๋ฅผ ์ฐฉ์ฉํ๊ฑฐ๋ ํด์ผ ํฉ๋๋ค.
์คํ์ด๊ฐ ๊ฐ์ง ์์๋ค์ด ๋ด๊ธด 2์ฐจ์ ๋ฐฐ์ด clothes๊ฐ ์ฃผ์ด์ง ๋ ์๋ก ๋ค๋ฅธ ์ท์ ์กฐํฉ์ ์๋ฅผ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ์ฌํญ
- clothes์ ๊ฐ ํ์ [์์์ ์ด๋ฆ, ์์์ ์ข ๋ฅ]๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
- ์คํ์ด๊ฐ ๊ฐ์ง ์์์ ์๋ 1๊ฐ ์ด์ 30๊ฐ ์ดํ์ ๋๋ค.
- ๊ฐ์ ์ด๋ฆ์ ๊ฐ์ง ์์์ ์กด์ฌํ์ง ์์ต๋๋ค.
- clothes์ ๋ชจ๋ ์์๋ ๋ฌธ์์ด๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
- ๋ชจ๋ ๋ฌธ์์ด์ ๊ธธ์ด๋ 1 ์ด์ 20 ์ดํ์ธ ์์ฐ์์ด๊ณ ์ํ๋ฒณ ์๋ฌธ์ ๋๋ '_' ๋ก๋ง ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
- ์คํ์ด๋ ํ๋ฃจ์ ์ต์ ํ ๊ฐ์ ์์์ ์ ์ต๋๋ค.
์ ์ถ๋ ฅ ์
์ ์ถ๋ ฅ ์ ์ค๋ช
์์ #1 headgear์ ํด๋นํ๋ ์์์ด yellow_hat, green_turban์ด๊ณ eyewear์ ํด๋นํ๋ ์์์ด blue_sunglasses์ด๋ฏ๋ก ์๋์ ๊ฐ์ด 5๊ฐ์ ์กฐํฉ์ด ๊ฐ๋ฅํฉ๋๋ค.
1. yellow_hat
2. blue_sunglasses
3. green_turban
4. yellow_hat + blue_sunglasses
5. green_turban + blue_sunglasses
์์ #2 face์ ํด๋นํ๋ ์์์ด crow_mask, blue_sunglasses, smoky_makeup์ด๋ฏ๋ก ์๋์ ๊ฐ์ด 3๊ฐ์ ์กฐํฉ์ด ๊ฐ๋ฅํฉ๋๋ค.
1. crow_mask
2. blue_sunglasses
3. smoky_makeup
ย
My solution
์ฒซ ๋ฒ์งธ ์ ์ถ๋ ฅ ์๋ฅผ ๋ณด๋ฉด headgear์ yellowhat, green_turban 2๊ฐ์ง๊ฐ ์๊ณ eyewear์ bluesunglasses๊ฐ ์๋ค.
ํค๋๊ธฐ์ด๋ ์์ด์ด์ด๋ ๊ฐ๊ฐ ์ฐฉ์ฉํ์ง ์๋ ๊ฒฝ์ฐ์ ์๊ฐ ์์ผ๋ฏ๋ก (2+1) * (1+1) = 6์ด ๋์ด์ผ ํ ๊ฒ ๊ฐ๋ค.
ํ์ง๋ง ์ ํ์ฌํญ์ ๋ฐ๋ฅด๋ฉด ํ๋ฃจ์ ํ ์์์ ๋ฐ๋์ ์
์ด์ผ ๋๊ธฐ ๋๋ฌธ์ 6์์ -1์ ํด์ฃผ๋ฉด ์ต์ข
๋ฆฌํด๊ฐ์ธ 5๊ฐ ๋๋ค.
[["yellowhat", "headgear"], ["bluesunglasses", "eyewear"], ["green_turban", "headgear"]]
return : 5
ย
๋ ๋ฒ์งธ ์
์ถ๋ ฅ ์๋ ๋ง์ฐฌ๊ฐ์ง๋ก ์์ด์ด์ด๊ฐ 3๊ฐ์ง์ธ๋ฐ ์ง๊ด์ ์ผ๋ก ๊ณ์ฐ์ด ๋์ง๋ง ์์ ๊ฐ์ ์์ผ๋ก ์ฒ๋ฆฌํ๋ค๊ณ ํ์ ๋ (3+1) - 1 = 3์ด ๋๋ค.
[["crowmask", "face"], ["bluesunglasses", "face"], ["smoky_makeup", "face"]]
return : 3
ย
clothes๋ฅผ Map์ ์ ์ฅํ๋ฉด์ ๊ทธ ์์์ ์ข
๋ฅ(์ธ๋ฑ์ค)์ ๊ฐ์ 1์ฉ ์ฆ๊ฐ์์ผ์ค๋ค.
๊ทธ๋ค์ ๋ง๋ค์ด์ง Map์ ๋๋ฉด์ (์กด์ฌํ๋ ๊ฐ+1)์ ๊ณฑํ๋ค ์ต์ข
๊ฐ์ -1์ ํด์ฃผ๋ฉด ์กฐํฉ์ ์๊ฐ ๋์ฌ ๊ฒ์ด๋ค.
function solution(clothes) {
var answer = 1;
let checkMap = new Map();
for (let [k, v] of clothes) {
if (checkMap.has(v)) {
checkMap.set(v, checkMap.get(v) + 1);
} else checkMap.set(v, 1);
}
for (let [k, v] of checkMap) {
answer *= v + 1;
}
return answer - 1;
}
test("solution", () => {
expect(
solution([
["yellowhat", "headgear"],
["bluesunglasses", "eyewear"],
["green_turban", "headgear"],
])
).toBe(5);
expect(
solution([
["crowmask", "face"],
["bluesunglasses", "face"],
["smoky_makeup", "face"],
])
).toBe(3);
});
ย