본문 바로가기

프로그래머스 문제/Level 2

[프로그래머스] 위장 - 자바스크립트

문제 설명

 

 

문제 풀이

function solution(clothes) {
  let clothesType = [];
  let uniqueClothesType = [];
  let temp = [];
  let temptemp = [];
  // clothesType에 옷 각 옷의 종류만 넣어준다.
  clothes.forEach(function(element) {
    clothesType.push(element[1])
  });
  // 옷 종류의 중복 값을 제거해준다.
  uniqueClothesType = Array.from(new Set(clothesType));
  // 중복 값을 제거한 옷 종류와 제거하지 않은 옷 종류를 대조하여 temp에 값을 넣어 준다.
  for(let i = 0; i <= uniqueClothesType.length - 1; i++) {
    temp.push(0);
    for(let j = 0; j <= clothesType.length - 1; j++) {
      if(uniqueClothesType[i] === clothesType[j]) {
        temp[i] += 1;
      };
    };
  };
  // temptemp에 옷 가지수에 1을 더한 후 return 값에 각 옷들 곱해주고 -1 해준다.
  temptemp = temp.map(x => x + 1);
  return temptemp.reduce((a, b) => a * b) - 1;
}

  경우의 수를 보는 문제이지만 그 값들을 어떻게 뽑아 올것인지 묻는 문제였다. 다른 사람들은 엄청 간단하게 코딩했지만 나는 그런 답들을 보지 않고 내가 생각할 수 있는 범위의 문법을 활용해서 풀어보았다. 그리고 temptemp에서 +1을 해준 것은 해당 옷 종류를 안입은 경우도 있기 때문이다.

 

실행결과

 

 

코드 채점하고 제출