알고리즘/프로그래머스
[해시] 의상 - Python / JavaScript
Dev. Dong
2025. 3. 23. 13:34
문제 링크 - 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를 생성하여 각 의상을 넣어서 해당 배열의 길이를 구해서 문제 해결 (단점: 계산식 복잡 + 성능 저하/ 장점: 복잡한 문제의 경우 디버깅 하기 쉬움)
- 각 항목에 갯수를 기록하여 문제를 풀는게 더 효율적임