Sqsung DevLog

[백준] 9375번: 패션왕 신해빈 - Node.js (자바스크립트) 본문

Algorithm

[백준] 9375번: 패션왕 신해빈 - Node.js (자바스크립트)

sqsung 2023. 5. 27. 12:52

1. 문제 ㅡ 9375번: 패션왕 신해빈 (난이도: Silver III)

 

9375번: 패션왕 신해빈

첫 번째 테스트 케이스는 headgear에 해당하는 의상이 hat, turban이며 eyewear에 해당하는 의상이 sunglasses이므로   (hat), (turban), (sunglasses), (hat,sunglasses), (turban,sunglasses)로 총 5가지 이다.

www.acmicpc.net

2. 풀이 ㅡ Node.js (자바스크립트)

const [, ...input] = require('fs').readFileSync('dev/stdin').toString().trim().split('\n');

const tcs = [];

while (input.length) {
  const tc = {};
  let total = +input.shift();

  while (total--) {
    const [, category] = input.shift().split(' ');

    tc[category] = tc[category] ? (tc[category] += 1) : (tc[category] = 1);
  }

  tcs.push(tc);
}

tcs.forEach(tc => {
  const values = Object.values(tc);

  console.log(values.reduce((a, c) => a * (c + 1), 1) - 1);
});

 

2-1. 풀이 설명

테스트 케이스 별로 N개의 의상의 이름과 종류가 주어진다. 사실 의상의 이름은 크게 중요하지 않기 때문에, 테스트 케이스마다 의상 종류 별로 몇 개의 의상이 있는지 파악했다. 

 

문제에 의하면 신해빈씨는 무조건 한 개 이상의 의상을 착용해야 한다. 첫 번째 테스트 케이스처럼 headgear 2개, eyewear 1개를 가지고 있는 경우, headgear를 착용하는 경우 2, 착용하지 않는 경우 1. eyewear을 착용하는 경우 1, 착용하지 않는 경우 1. 즉, 총 가능한 의상 조합의 수는 (2 + 1) * (1 + 1) = 6이다. 단, 아예 알몸인 경우는 빼야하기 때문에 마지막에 1을 빼주면 된다.