Programmers_42578 의상
- TOC {:toc}
이 글은 프로그래머스의 42578번 문제를 JavaScript로 풀이한 것을 모아놓은 글입니다.
일종의 연습 기록이며 제가 정답을 받은 코드와 참고할만한 다른 코드를 같이 기록합니다. 필요한 경우 코드에 대한 해설을 기록합니다만 코드는 통과했어도 해설은 틀릴 수 있기 때문에 가볍게 참고해주시길 부탁드립니다. 피드백은 편하신 방법으로 자유롭게 주시면 감사하겠습니다.
2023.11.15
테스트 | 통과 | 시간 | 메모리 |
---|---|---|---|
테스트 1 | 통과 | 0.22ms | 33.4MB |
테스트 2 | 통과 | 0.18ms | 33.6MB |
테스트 3 | 통과 | 0.32ms | 33.6MB |
테스트 4 | 통과 | 0.22ms | 33.5MB |
테스트 5 | 통과 | 0.29ms | 33.5MB |
테스트 6 | 통과 | 0.21ms | 33.5MB |
테스트 7 | 통과 | 0.31ms | 33.5MB |
테스트 8 | 통과 | 0.20ms | 33.5MB |
테스트 9 | 통과 | 0.09ms | 33.4MB |
테스트 10 | 통과 | 0.09ms | 33.5MB |
테스트 11 | 통과 | 0.12ms | 33.5MB |
테스트 12 | 통과 | 0.21ms | 33.5MB |
테스트 13 | 통과 | 0.20ms | 33.5MB |
테스트 14 | 통과 | 0.14ms | 33.4MB |
테스트 15 | 통과 | 0.08ms | 33.5MB |
테스트 16 | 통과 | 0.08ms | 33.6MB |
테스트 17 | 통과 | 0.24ms | 33.4MB |
테스트 18 | 통과 | 0.26ms | 33.6MB |
테스트 19 | 통과 | 0.27ms | 33.5MB |
테스트 20 | 통과 | 0.17ms | 33.4MB |
테스트 21 | 통과 | 0.09ms | 33.5MB |
테스트 22 | 통과 | 0.11ms | 33.4MB |
테스트 23 | 통과 | 0.26ms | 33.5MB |
테스트 24 | 통과 | 0.29ms | 33.4MB |
테스트 25 | 통과 | 0.28ms | 33.5MB |
테스트 26 | 통과 | 0.35ms | 33.4MB |
테스트 27 | 통과 | 0.14ms | 33.6MB |
테스트 28 | 통과 | 0.32ms | 33.5MB |
단계 | 시작 시각 | 끝난 시각 | 걸린 시간 |
---|---|---|---|
풀이 생각 | 23:28:09 | 23:28:37 | |
코딩 | 23:28:41 | 23:34:46 |
function solution(clothes) {
const wear = {};
clothes.forEach(([_, category]) => {
wear[category] = (wear[category] || 0) + 1;
});
return Object.values(wear).reduce((acc, curr) => acc * (curr + 1), 1) - 1;
}
아이디어 & 풀이
코니가 입을 수 있는 총 의상 조합의 수는 각 종류별 의상의 개수를 곱한 것과 같다.
- 이 때 해당 의상을 입지 않는 것도 하나의 경우로 들어가야 하므로 각 개수에 1을 더한 값을 곱해야 하고
- 모두 벗은 것은 의상의 경우로 치지 않으므로 최종 개수에서 1을 빼야 한다.
의상의 종류를 key, 해당 의상의 개수를 value로 하는 객체를 구성한 뒤 해당 객체의 값들에 1을 더한 값들을 모두 곱해서 1을 뺀 값을 반환하면 된다.
wear
라는 빈 객체를 생성한 뒤,clothes
를 순회하면서 의상의 종류를 key로 값을 가져와 해당 값에 1을 더한 값으로 바꾼다.- 해당 의상 종류에 처음 접근하는 경우
undefined
가 반환되므로 값을 가져올 때undefined
에 대한 처리를 해준다. Object
의values
메소드를 이용해wear
객체의 값만 가져온 뒤 이를reduce
로 각 값에 1을 더해 곱한다.
-
ps-js