ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

[๋ฌธ์ œ]

https://school.programmers.co.kr/learn/courses/30/lessons/42578

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

 

[ํ’€์ด]

์ŠคํŒŒ์ด๋“ค์ด ์˜ท์„ ์กฐํ•ฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 

๋งŒ์•ฝ ์–ผ๊ตด์ด a,b 2๊ฐœ, ์ƒ์˜ c 1๊ฐœ๊ฐ€ ์žˆ๋‹ค๋ฉด, a, b, ab, c, ac, bc 5๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

 

๊ฐ ์˜ท ์ข…๋ฅ˜๋ณ„๋กœ 1๊ฐœ ์ด์ƒ ์ฐฉ์šฉํ•˜๋Š” ๊ฒฝ์šฐ, ์•„์˜ˆ ์ฐฉ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๋ฅผ ๊ฐ๊ฐ ๊ตฌํ•˜๋ฉด ์–ผ๊ตด 3๊ฐœ, ์ƒ์˜ 2๊ฐœ ์ด๊ณ , ์•„๋ฌด๊ฒƒ๋„ ์ฐฉ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๋Š” 1๊ฐœ์ž…๋‹ˆ๋‹ค.

 

ํ•˜์ง€๋งŒ, ์ตœ์†Œ 1๊ฐœ์˜ ์˜ท์„ ์ฐฉ์šฉํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋Š” (์–ผ๊ตด ์ข…๋ฅ˜ + 1) X (์ƒ์˜ ์ข…๋ฅ˜ + 1) - 1 = 3 X 2 - 1 = 5๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

 

 

๋”ฐ๋ผ์„œ ํ’€์ด ๊ณผ์ •์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • answer์€ ๊ณฑ์…ˆ์— ํ™œ์šฉํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— 1๋กœ ์ดˆ๊ธฐํ™” ํ•ฉ๋‹ˆ๋‹ค.
  • (ํƒ€์ž…, ๊ฐœ์ˆ˜)๋ฅผ ํ‚ค์™€ ์Œ์œผ๋กœ ๊ฐ–๋Š” Map์„ ํ™œ์šฉํ•ด ๊ฐ๊ฐ์˜ ํƒ€์ž…์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•ฉ๋‹ˆ๋‹ค.
  • Map์„ forEach๋ฌธ์„ ํ†ตํ•ด ์ˆœํšŒํ•˜๋ฉฐ ๊ฐ๊ฐ์˜ ํƒ€์ž…์˜ ๊ฐœ์ˆ˜ + 1์˜ ๊ฐ’์„ answer์— ๊ณฑํ•ด์ค๋‹ˆ๋‹ค. 
  • ๋งˆ์ง€๋ง‰์— ์•„๋ฌด๊ฒƒ๋„ ์ฐฉ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ 1์„ answer์—์„œ ๋นผ์ฃผ๋ฉด ์˜ท์˜ ์กฐํ•ฉ์„ ๊ตฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

[์ฝ”๋“œ]

function solution(clothes) {
    let answer = 1;
    
    const map = new Map();
    
    clothes.forEach((item) => {
        const [name, type] = item;
        map.has(type) ? map.set(type, map.get(type) + 1) : map.set(type, 1);
    })
    
    map.forEach((item) => answer *= (item + 1));
    answer--;
                
    return answer;
}