한 걸음씩
[프로그래머스][JS] 의상 본문
https://school.programmers.co.kr/learn/courses/30/lessons/42578
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이 과정
function solution(clothes) {
let obj = {}
for (let i = 0; i < clothes.length; i++){
const cloth = clothes[i]
if (obj[cloth[1]]){
obj[cloth[1]]++
}else{
obj[cloth[1]] = 1
}
}
// console.log(obj)
// 각 종류 별로 최대 1가지 의상만 착용 가능 => +1은 해당 종류의 의상을 입지 않는 경우
const value = Object.values(obj).map(item => item + 1).reduce((acc, cur) => acc * cur, 1)
// console.log(value)
// 최소 한 개의 의상은 입어야 한다 => 아무것도 입지 않는 경우 빼야함(-1)
return value - 1;
}
문제에서 주어진 조건은 2가지
1. 각 종류별로 최대 1가지 의상만 착용할 수 있다
2. 하루에 최소 한 개의 의상을 입는다. → 아무것도 입지 않는 경우는 없다
위의 조건을 만족하는 서로 다른 옷의 조합의 수를 계산해야 한다.
clothes = [["yellow_hat", "headgear"], ["blue_sunglasses", "eyewear"], ["green_turban", "headgear"]]일 때,
obj = { headgear: 2, eyewear: 1 }
value = (2 + 1) * (1 + 1) : 여기서 +1은 해당 종류의 의상을 입지 않는 경우를 체크한 것
마지막에 value에 -1을 했는데 -1은 아무것도 입지 않는 경우를 빼준 것
리뷰
완전 수학문제였는데 조합은 약한 부분이라 도움이 좀 필요했다.
'Programmers' 카테고리의 다른 글
[프로그래머스][JS] 영어 끝말잇기 ✅ (0) | 2023.09.05 |
---|---|
[프로그래머스][JS] H-Index ✅ (0) | 2023.08.16 |
[프로그래머스][JS] 귤 고르기 (0) | 2023.08.14 |
[프로그래머스][JS] 최고의 집합 ✅ (0) | 2023.08.12 |
[프로그래머스][JS] 튜플 (0) | 2023.08.11 |