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
- telegraf
- 코딩테스트 연습
- Stack
- javascript
- queue
- 파이썬
- PCCP
- Vite
- configfile
- 프로그래머스
- pnpm
- React
- algorhtim
- 슬라이딩 윈도우
- algorighm
- 스택/큐
- modbus
- pymodbus
- Algorithm
- InfluxDB
- python
- Jest
- Server monitoring
- Two Pointer
- 완전탐색
- monorepo
- frontend
- 알고리즘
- 점화식
- typescript
Archives
- Today
- Total
DM Log
[해시] 의상 - Python / JavaScript 본문
문제 링크 - https://school.programmers.co.kr/learn/courses/30/lessons/42578
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
[문제 간단 요약]
1. 주어진 의상 중 종류 별로 최대 1개의 의상을 착용 할 때 모든 경우의 수를 구하는 문제
2. 종류따라 꼭 하나씩 착용 해야하는 문제는 아님
[문제 해결 방안]
1. 의상의 종류에 따른 의상의 갯수를 딕셔너리 형태로 기록
2. 종류에 따라 입을 수 있는 경우의 수는 (의상의 갯수 + 1)로 입지 않는 경우를 생각해야함
3. 전체 경우의 수에서 아무것도 입지 않는 경우를 제외하
[문제 해결 코드 - python]
def solution(clothes):
dic = {}
for name, catagory in clothes:
if catagory not in dic:
dic[catagory] = 1
else:
dic[catagory] += 1
cnt = 1
for key, value in dic.items():
cnt *= value+1
return cnt-1
[문제 해결 코드 - javascript]
function solution(clothes) {
let dict = {};
for (let cloth of clothes) {
if (!dict[cloth[1]]) {
dict[cloth[1]]=[]
}
dict[cloth[1]].push(cloth[0])
}
let cnt = 1
for ([key, value] of Object.entries(dict)) {
cnt *= (value.length+1)
}
return cnt - 1
}
코드 개선점
- 어떠한 문제를 해결할때 원하는 결과를 도출하려고 해야함
- javaScript의 코드의 경우 list를 생성하여 각 의상을 넣어서 해당 배열의 길이를 구해서 문제 해결 (단점: 계산식 복잡 + 성능 저하/ 장점: 복잡한 문제의 경우 디버깅 하기 쉬움)
- 각 항목에 갯수를 기록하여 문제를 풀는게 더 효율적임
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[정렬] H-Index - Python / JavaScript (0) | 2025.03.29 |
---|---|
[스택/큐] 기능개발 - Python (0) | 2025.03.24 |
[연습문제] 행렬의 곱셈 - Python / JavaScript (0) | 2025.03.22 |
[월간 코드 챌린지 시즌3] n^2 배열 자르기 - Python / JavaScript (0) | 2025.03.19 |
[연습문제] 할인 행사 - Python (0) | 2025.03.16 |