Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- group by
- SQL
- 오블완
- DP
- dfs
- 파이썬
- javascript
- 너비 우선 탐색
- 자바스크립트
- join
- SQL 고득점 KIT
- Lv. 3
- 소프티어
- bfs
- softeer
- 깊이 우선 탐색
- 프로그래머스
- 티스토리챌린지
- programmers
- LEVEL 2
- Lv. 2
- Lv. 1
- C언어
- level 3
- Python
- select
- Lv. 0
- Dynamic Programming
- 동적계획법
- Java
Archives
- Today
- Total
몸과 마음이 건전한 SW 개발자
프로그래머스 [Lv. 2] 의상 {언어 : JavaScript} 본문
문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/42578
정답 코드
function solution(clothes) {
const clothesDict = {}
clothes.forEach(([clothesName, clothesType]) => {
if (clothesDict[clothesType] !== undefined) {
clothesDict[clothesType].push(clothesName)
} else {
clothesDict[clothesType] = [clothesName]
}
})
const clothesLengthes = Object.values(clothesDict).map((e) => e.length)
const answer = clothesLengthes.reduce((res, e) => {
return res * (e + 1)
}, 1)
return answer - 1;
}
풀이 방법
- 반복문을 통해서 clothesDict에 clothesType이 있는지 확인한다.
- 있으면 push
- 없으면 새로 key(종류) value(의상) 값으로 딕셔너리에 추가
- clothesDict의 value값만 가져와서 길이를 구한뒤 새로 mapping 해준다.
- 길이를 reduce (콜백함수)를 통해서 곱한다.
왜 res * (e + 1)일까?
모자 | 상의 | 하의 | 신발 | |
의류 | 썬캡, 캡모자, 힙합모자 | 맨투맨, 카라티, 목폴라 | 청바지, 일자바지 | 구두, 단화, 운동화 |
개수 | 3 | 3 | 2 | 3 |
선택하지 않음 더하기 | 3 + 1 = 4 | 3 + 1 = 4 | 2 + 1 = 3 | 3 + 1 = 4 |
모자만 먼저 예를 들면
- 썬캡을 선택했을 때
- 캡모자를 선택했을 때
- 힙합모자를 선택했을 때
- 선택하지 않았을 때
이렇게 총 4개가 된다.
그럼 왜 answer - 1일까?
- 모자, 상의, 하의, 신발 모두 선택하지 않았을 경우 = 1 이기때문이다.
- 문제에서 알 수 있듯이 하나는 꼭 입어야 하므로 빼줘야 한다.
따라서 결과는 4 * 4 * 3 * 4 - 1 = 191
느낀점
- 코딩을 잘하려면 수학도 잘하는 것이 좋다.
'알고리즘' 카테고리의 다른 글
프로그래머스 [Lv. 2] H-Index {언어 : JavaScript} (0) | 2024.03.11 |
---|---|
프로그래머스 [Lv. 1] K번째 {언어 : JavaScript} (0) | 2024.03.11 |
백준 GOLD 4 [1477번] 휴게소 세우기 [반례 포함] {언어 : Python} (0) | 2024.03.08 |
Softeer [Level 3] 슈퍼컴퓨터 클러스터 {언어 : Python} (0) | 2024.03.08 |
프로그래머스 [Lv. 1] 완주하지 못한 선수 {언어 : JavaScript} (0) | 2024.03.07 |