-
[CodeKata] 프로그래머스 : 2.24(수), 위장Algorithm 2021. 2. 24. 13:40반응형
🥋 Ooooth!! (Level 2)
🧮 풀이
function solution(clothes) { let clothObj = {}; for (let item of clothes) { clothObj[item[1]] = !clothObj[item[1]] ? [item[0]] : [...clothObj[item[1]], item[0]] } return Object.values(clothObj).map(arr => arr.length + 1).reduce((acc, cur) => acc * cur) - 1 }
- 먼저 옷을 부위(?)별로 정리할 객체(clothObj)를 만든다. clothes 를 순회하며 각 item을 객체에 정리한다.
- 1번째 요소는 부위이므로 key로 한다. 0번째 요소는 옷 종류이므로 key값으로 배열형태로 저장한다.
- 옷종류 배열들의 길이 + 1(map)로 가공한 뒤 이들을 곱해준다(reduce). 1을 더하는 이유는 해당 부위를 안입는 경우까지 고려
- 마지막에 1을 빼준다. 그 이유는, 위 경우는 모든 부위를 안 입는 경우까지 포함되기 때문에 이는 제외한다.
🖇 리뷰
사실 clothObj 키값을 1씩 더해가는 것이 낫다. 코드도 간결해지고, 맵핑이 생략될 수 있다.
하지만, 옷 조합들을 string으로 합쳐서 반환하는 등의 경우에는 위처럼 키값에 배열로 누적하는 방법도 유용할 것이다.
반응형'Algorithm' 카테고리의 다른 글
[CodeKata] 프로그래머스 : 2.26(금), 타겟 넘버, 카펫 (0) 2021.02.26 [CodeKata] 프로그래머스 : 2.25(목), 구명보트 (0) 2021.02.25 [CodeKata] 프로그래머스: 2.23(화), 메뉴 리뉴얼 (0) 2021.02.23 [CodeKata] 프로그래머스: 2.22(월), 멀쩡한 사각형 (0) 2021.02.22 [CodeKata] 위클리 프로그래머스(2월 3주차) (0) 2021.02.15