코딩테스트/프로그래머스

[프로그래머스] [Level 2] [해시] 위장

박소민 2022. 7. 21. 12:08
위장
 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

  • 내 풀이
    • 의상의 종류별 개수 +1 씩 해서 곱하기 - 1
      • +1 하는 이유: 안입는 경우를 추가한 것
      • -1 하는 이유: 모든 옷을 안입을 경우를 제외한 것
      • value값이 int인 경우 연산 가능
    • 📍key가 존재하는지 확인할 때
      • if dic[key]: 로 확인하면 없을 경우를 인지하지 못해서 error 발생 
      • → key in dic.keys() 로 확인해야 함
def solution(clothes):
    answer = 1
    dic={}
    
    for c in clothes:
        if c[1] in dic.keys():
            dic[c[1]]+=1
        else:            
            dic[c[1]]=1

    dic_values=dic.values()
    for d in dic_values:
        answer*=(d+1)
    answer-=1
    return answer
clothes1= [["yellow_hat", "headgear"], ["blue_sunglasses", "eyewear"], ["green_turban", "headgear"]]
clothes2= [["crow_mask", "face"], ["blue_sunglasses", "face"], ["smoky_makeup", "face"]]
print(solution(colthes1))
print(solution(colthes2))
#결과
5
3

 

📍 리스트 내 값이 여러개 일 때, 인덱스 사용하지 않고 값 바로 불러올 수 있음

for c, t in clothes:
	if t in dic.keys():
		dic[t]+=1
	else:            
		dic[t]=1