프로그래머스[Level 2] 위장(해시, 수학)

bkboy·2022년 6월 10일
0

문제

제한 사항

입출력 예

풀이

function solution(clothes) {
  let answer = 1;
  let clothesObj = {};
  for (let [x, y] of clothes) {
    if ([...Object.keys(clothesObj)].includes(y)) {
      clothesObj[y]++;
    } else {
      clothesObj[y] = 1;
    }
  }

  for (let x of [...Object.values(clothesObj)]) {
    answer *= x + 1; // 2벌이 있다고 치면, 2가지의 경우에 입지 않을 경우까지 +1 해서 곱해줘야한다.
  }

  return answer - 1; // 아무 옷도 입지 않는 경우를 제외해준다.
}

모자 2개, 상의 3개를 가지고 조합하는 수를 생각해보자.

모자를 안쓰거나, 모자1을 쓰거나, 모자2를 쓰거나.

상의를 안 입거나 상의1을 입거나, 상의2를 입거나, 상의 3을 입거나

즉, (2+1) * (3+1) = 12 근데 아무것도 입지 않은 경우가 포함되기에 -1해서 11이 된다.

profile
음악하는 개발자

0개의 댓글