Notice
Recent Posts
Recent Comments
Link
REC
프로그래머스 Lv.2: 의상 - Python 풀이 본문
SMALL
문제 설명
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
- 매개변수: 코니가 가진 의상들이 담긴 2차원 문자열 배열 clothes.
- clothes의 각 행은 [의상의 이름, 의상의 종류]의 형식.
- 모든 문자열의 길이는 1 이상 20 이하인 자연수이고, 알파벳 소문자 또는 '_' 로만 이루어진다.
- 코니가 가진 의상의 수는 1개 이상 30개 이하이고, 같은 이름을 가진 의상은 존재하지 않는다.
- 예시) [["crow_mask", "face"], ["blue_sunglasses", "face"], ["smoky_makeup", "face"]]
- 반환: 서로 다른 옷의 조합의 수.
- 규칙
- 각 종류별로 최대 1가지 의상만 착용할 수 있다.
- 착용한 의상의 일부가 겹치더라도, 다른 의상이 겹치지 않거나, 혹은 의상을 추가로 더 착용한 경우에는 서로 다른 방법으로 옷을 착용한 것으로 계산한다.
- 코니는 하루에 최소 한 개의 의상은 입어야 한다.
풀이 과정
from itertools import combinations
def solution(clothes):
answer = 1
clothes_dict = {}
for _, kind in clothes:
clothes_dict[kind] = 0
for _, kind in clothes:
clothes_dict[kind] += 1
for k,v in clothes_dict.items():
answer *= len(list(combinations([1 for _ in range(v)], 1))) + 1
return answer - 1
옷의 종류를 key로 갖고, 그 종류의 옷 개수를 value로 갖는 해시 테이블은 바로 만들었는데 조합 일반식을 세우는 데에 한참을 시간 쓰다가 도저히 모르겠어서 아래의 글을 보고 풀었다. 너무 설명을 잘해주셔서 내가 더 설명할 건 없다.
풀면서도 '아니 이게 어떻게 해시 문제야? 수학 아닌가' 했는데 나만 그런 거 아니라서 다행이다.
어떻게 이렇게 생각해서 식을 만들어내지... 나의 모든 수학적 사고는 고3 때가 마지막이라
까먹을 때쯤 이 문제가 다시 나온다면 솔직히 그때도 틀릴 것 같다.
뭐 어쩌겠어ㅠ 반복만이 답이다.
그래도 해시 문제라고 해시 테이블 만들었으니 그거는 칭찬한다.
LIST
'Algorithm' 카테고리의 다른 글
백준 1253번: 좋다 (G4) - Swift 풀이 (0) | 2025.02.02 |
---|---|
백준 6236번: 용돈 관리 (S1) 풀이 (0) | 2025.02.01 |
프로그래머스 Lv.2: 전화번호 목록 - Python 풀이 (0) | 2025.01.28 |
프로그래머스 Lv.1: 가장 많이 받은 선물 - Python 풀이 (0) | 2025.01.27 |
프로그래머스 Lv.2: 가장 큰 수 - Python 풀이 (0) | 2025.01.26 |