문제 설명
문제 풀이
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을 해준 것은 해당 옷 종류를 안입은 경우도 있기 때문이다.
실행결과
코드 채점하고 제출
'프로그래머스 문제 > Level 2' 카테고리의 다른 글
[프로그래머스] 기능개발 - 자바스크립트 (0) | 2020.09.09 |
---|