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
- 코딩테스트
- nestjs
- Deep Dive
- OOP
- dfs
- Kubernetes
- css
- 자료구조
- Linux
- winston
- typescript
- 인접리스트
- html
- 알고리즘
- node.js
- javascript
- GraphQL
- REST API
- bean
- 탐욕법
- Interceptor
- puppeteer
- 프로그래머스
- TIL
- java
- MySQL
- Spring
- JWT
- 인접행렬
- LifeCycle
Archives
- Today
- Total
처음부터 차근차근
[프로그래머스] Lv2 의상 본문
728x90
문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/12951
문제 설명
내 풀이
function solution(clothes) {
// 의상의 종류를 key, 그것에 일치하는 의상의 개수를 hash라고 한다.
let key = [];
let hash = [];
let answer = 1;
// 반복문을 돌려 hash table을 생성하자.
for(let i = 0; i < clothes.length; i++) {
if (key.indexOf(clothes[i][1]) == -1) {
key.push(clothes[i][1]);
hash.push(1);
} else {
hash[key.indexOf(clothes[i][1])]++;
}
}
for (let value of hash) {
answer *= (value + 1)
}
return answer -1
}
종류에 따른 의상 구분을 할 경우 hash 자료구조를 사용
이후, 종류별로 구분이 되었다면 조합할 수 있는 개수를 계산하는데, 이는 다른 사람의 풀이 법을 참고하면, 굉장히 간단한 코드이다.
https://school.programmers.co.kr/questions/56645
다른 사람의 풀이
function solution(clothes) {
return Object.values(clothes.reduce((obj, t)=> {
obj[t[1]] = obj[t[1]] ? obj[t[1]] + 1 : 1;
return obj;
} , {})).reduce((a,b)=> a*(b+1), 1)-1;
}
나와 다르게 객체로 hash를 만든 케이스. reduce를 사용하여 코드를 깔끔하게 풀었다.
오늘 배운 점
- hash를 사용하는 문제 풀이법.
- 알고리즘 하나 더 알아간다.
'코딩테스트 > Javascript' 카테고리의 다른 글
[LeetCode] Binary Search (0) | 2023.12.27 |
---|---|
[프로그래머스] Lv2 더 맵게 (0) | 2023.11.16 |
[프로그래머스] Lv2 이진 변환 반복하기 (1) | 2023.11.01 |
[프로그래머스] Lv0 저주의 숫자3 (1) | 2023.11.01 |
[프로그래머스] Lv0 숨어있는 숫자의 덧셈(2) (1) | 2023.11.01 |