-
[프로그래머스] 의상알고리즘 2023. 7. 8. 20:43728x90
1. 문제
https://school.programmers.co.kr/learn/courses/30/lessons/42578
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
2. 접근
1. 처음에는 dict()으로 같은 의상의 종류가 나올 때 마다 1씩 증가시키고, combinations 을 통해서 조합을 구해서 해결해보려 했지만, 시간초과가 떴다
2. 구글링을 했다
- dict()을 쓰는 방식은 같다.
- dict에 있는 value값들을 통해 ans을 구했다. [ (의상종류+1)을 모두 곱한 후 -1 ] 이 부분이 이해가 안갔다
-> " 의상종류가 3개면 각각의 부위에서 안입는것,첫번째,두번째,세번째 총 4개의 선택이 가능하고 부위별로 가능한 선택 수를 곱하면 모든 조합이 나오는데 최소 하나는 입어야 해서 1을 빼야 합니다. "을 듣고 나니 combination이 없이도 모든 조합을 구할 수 있다는 생각이 들었다
꿀팁
for문에서 name, typ 이렇게 2개로 해도 name은 안쓰는걸 아니까 _ 로 name을 대체할 수 있다
3. 풀이
def solution(clothes): ans = 1 dic = dict() # for cloth in clothes: # name, typ = cloth # if typ in dic: # dic[typ] += 1 # else: # dic[typ] = 1 # 위와 같은 코드이다 for _, typ in clothes: if typ in dic: dic[typ] += 1 else: dic[typ] = 1 print(dic) for h in dic.values(): ans *= (h+1) #print("{} {}".format(h, ans)) return ans - 1
'알고리즘' 카테고리의 다른 글
[프로그래머스] n^2 배열 자르기 (0) 2023.07.11 [프로그래머스] 방문 길이 (0) 2023.07.09 [프로그래머스] 전화번호 목록 (0) 2023.06.29 [프로그래머스] 튜플 (0) 2023.06.29 [프로그래머스] 점프와 순간 이동 (0) 2023.06.29