본문 바로가기
프로그래머스/Python

[프로그래머스] 의상 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트

by 우당탕탕 개발자 2023. 7. 22.
728x90
반응형

 

 

프로그래머스

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

programmers.co.kr

 

1. 문제 설명

2. 풀이과정

  1. 의상 종류별로 구분하기 위해 딕셔너리를 생성한다. d = {}
  2. 입력받은 의상을 하나씩 추출한다. for i in clothes
  3. 만약 이미 추출한 의상 종류가 딕셔너리에 존재하면 if (i[1] in d)
  4. 의상 종류의 값에 1을 더한다. d[i[1]] += 1
  5. 반면에 추출한 의상 종류가 처음이라면 else
  6. 의상 종류의 값을 1로 하여 새로 저장한다. d[i[1]] = 1
  7. 각 의상의 선택 가지 수를 저장할 리스트를 생성한다. count = list()
  8. 분류한 의상 종류별 수를 하나씩 추출한다. for i in d.items()
  9. 의상 수에 1을 더하여 리스트에 추가한다. count.append(i[1] + 1)
  10. 1을 더하는 이유는 안 입는 경우를 고려했기 때문이다.
  11. 전체 입을 수 있는 경우의 수를 저장할 변수를 생성하고 1로 초기화한다. total = 1
  12. 입을 수 있는 의상의 가지 수를 하나씩 추출하여 for i in count
  13. 전체 경우의 수에 곱한다. total *= i
  14. 전체 경우의 수는 모두 안 입는 경우가 포함되어 있으므로 1을 빼준 값을 최종 저장한다. answer = total - 1
반응형

3. 소스코드

def solution(clothes):
    answer = 0
    
    d = {}
    for i in clothes:
        if (i[1] in d):
            d[i[1]] += 1
        else:
            d[i[1]] = 1
    
    count = list()
    for i in d.items():
        count.append(i[1] + 1)

    total = 1
    for i in count:
        total *= i
    
    answer = total - 1
        
    return answer
728x90
반응형