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
- 깊이우선탐색
- 완주하지 못한 선수
- 소수찾기
- react-native-navigation
- Stack
- Virtual DOM
- Algorithm
- 이중우선순위큐
- Javascript
- Programmers
- 주식
- 기능개발
- 가장 큰 수
- 더 맵게
- k번째수
- react-native
- hash
- 타겟 넘버
- 전화번호 목록
- Brute Force
- 넓이우선탐색
- Data Structure
- react
- Queue
- heap
- react-native bind
- 다리를 지나는 트럭
- browser workflow
- 디스크 컨트롤러
- sorting
Archives
- Today
- Total
개발 블로그
[프로그래머스/Javascript/Hash] 위장 본문
1. 문제 설명(출처: programmers.co.kr/learn/courses/30/lessons/42578)
2. 문제 풀이
1) '완주하지 못한 선수'와 유사하게 여러 종류의 옷들이 있지만 같은 종류의 옷은 중복해서 입을 수 없으므로 hash map에 종류별로 옷의 갯수를 count한다면 이 문제는 중복 조합 문제로 바뀌게 된다. 따라서 이 문제의 답 공식 = (옷(얼굴) + 1) x (옷(상의) + 1) x (옷(하의) + 1) x (옷(겉옷) + 1)) - 1이 된다.( +1은 입지 않은 경우, -1은 아무것도 입지 않은 경우)
2) 모든 종류의 옷을 각각 돌아가면서 아래 명령을 수행한다.
2-1) 만약 이미 map에 존재하는 옷의 종류라면
2-1-T1) 해당 옷 종류의 갯수를 +1 해준다.
2-1-F1) 해당 옷 종류를 (옷 종류, 1) 형태로 map에 저장한다.
3) (옷(종류) + 1)를 반복적으로 계산하기 위해 reduer를 사용한다.
4) hmap에 있는 옷 종류별 갯수를 배열의 형대로 reduer함수를 적용하고, 아무것도 입지 않은 경우 1을 뺀다.
3. 결과 코드
function solution(clothes) {
var hmap = new Map()
for(let clothe of clothes){
if(hmap.has(clothe[1])){
hmap.set(clothe[1], hmap.get(clothe[1])+1)
}else{
hmap.set(clothe[1], 1)
}
}
const reducer = (accumulator, currentValue) => accumulator * (currentValue + 1)
return [ ...hmap.values() ].reduce(reducer, 1) - 1
}
'IT > Programmers' 카테고리의 다른 글
[프로그래머스/Javascript/Brute Force] 모의고사 (0) | 2021.04.12 |
---|---|
[프로그래머스/Javascript/Hash] 베스트앨범 (0) | 2021.04.12 |
[프로그래머스/Python3/Hash] 전화번호 목록 (0) | 2021.04.10 |
[프로그래머스/Javascript/Hash] 완주하지 못한 선수 (0) | 2021.04.09 |
[프로그래머스/Javascript/Sorting] H-Index (0) | 2021.04.08 |