https://programmers.co.kr/learn/courses/30/lessons/42578?language=python3
코딩테스트 연습 - 위장
programmers.co.kr
코드[참고 블로그] :
def solution(clothes):
answer = 1
closet = {} # dictionary
for element in clothes :
key = element[1] # 옷 종류
value = element[0] # 옷 이름
if key in closet : # 이미 있었던 옷 종류라면 ?
closet[key].append(value)
else : # 처음 들어온 옷 종류라면 ?
closet[key] = [value] # list로 주어야 후에 append할 수 있다.
for key in closet.keys() :
answer *= (len(closet[key])+1)
return answer-1
복습 중 내가 생각한 코드 : (Counter이용)
from collections import Counter
def solution(clothes):
answer = 1
arr = []
for name, types in clothes :
arr.append(types)
arr=Counter(arr)
for i in arr.values() :
answer *= (i+1)
return answer-1
복습 중 내가 생각한 코드 : (dict이용)
def solution(clothes):
answer = 1
dic = {}
for cloth in clothes :
if cloth[1] in dic :
dic[cloth[1]] +=1
else :
dic[cloth[1]] = 1
for k, v in dic.items() :
answer *= (v+1)
return answer -1
배운 점 :
1. 옷 입을 수 있는 경우의 수 계산법 :
옷의 수 +1 (안입는 경우가 있어서 +1을 해줌)을 모든 종류에 대해서 계산한 후
모든 옷을 입지 않은 경우인 1가지 경우를 빼준다.
예를 들면 티셔츠 1개와 안경 2개가 있다고 하면
1번 티셔츠
1번 안경
2번 안경
1번 티셔츠 + 1번 안경
1번 티셔츠 + 2번 안경
으로 5개이다.
이것은
티셔츠 개수 (1) +1 = 2
안경의 개수 (2) +1 = 3
를 곱하여 나온 6에서 1을 뺀 값이다.
1을 더하는 이유는 착용하지 않은 경우에 대한 처리이고
마지막에 1을 빼는 이유는 아무것도 입지않은 경우를 빼는 것이다.
2. python의 dictionary
- {}으로 표현한다.
- key들을 돌리려면 keys()를 이용한다.
- dict에 있는 모든 것들을 돌리려면 items()를 이용한다.
참고 블로그 :
위장-프로그래머스(python)
문제 출처 : 프로그래머스-위장 문제설명 스파이들은 매일 다른 옷을 조합하여 입어 자신을 위장합니다. 예를 들어 스파이가 가진 옷이 아래와 같고 오늘 스파이가 동그란 안경, 긴 코트, 파란색
velog.io
복습 :
✅ 20220618
✅ 20220621
✅ 20220623
✅ 20220626
✅ 20220630
'알고리즘 > 프로그래머스문제풀이' 카테고리의 다른 글
[Python/프로그래머스]타겟넘버_DFS (0) | 2022.06.15 |
---|---|
[Python/프로그래머스]베스트앨범_해시 (0) | 2022.06.15 |
[Python/프로그래머스]전화번호 목록_해시 (0) | 2022.06.14 |
[Python/프로그래머스]완주하지 못한 선수 _해시 (0) | 2022.06.14 |
[Python/프로그래머스]입국심사 _이분탐색 (0) | 2022.06.14 |