CS/Algorithm 문제

[Programmers] 위장

[Programmers] 위장

 

🎈문제

https://programmers.co.kr/learn/courses/30/lessons/42578

💬설명

  • 문제 자체는 어렵지 않았다.
  • 우선 옷 종류별로 dictionary에 넣어서 개수를 센다. (ex) {"face": 2, "headgear": 1 }
  • 각각의 옷 종류별로 (아무것도 선택 안함, 첫번째꺼 선택, 두번째꺼 선택, ... 마지막꺼 선택) 이렇게 선택이 가능하다. 즉, face가 2개가 있다면 (아무것도 선택 안하거나, 선글라스를 선택하거나, 마스크를 선택하거나) 이렇게 3가지의 선택지가 있다.
  • 옷 종류별로 n + 1가지의 선택지가 있으므로 이것들을 전부 곱해준다.
  • 중요한건 아무것도 입지 않는 경우는 없으므로 1을 빼줘야 한다는 것.
  • 효율성 점수도 없고(그만큼 숫자가 작음) 조금만 생각하면 금방풀 수 있는 문제였다.

👩‍💻코드

def solution(clothes):
    answer = 1
    
    # 종류별로 dictionary에 개수 세기
    dic = {}
    for clothe in clothes:
        if clothe[1] in dic:
            dic[clothe[1]] += 1
        else:
            dic[clothe[1]] = 1
            
    # (종류별 개수 + 1) 곱하기 - 1
    for clothe in dic:
        answer *= (dic[clothe] + 1)
        
    return answer - 1

 

728x90
반응형

'CS > Algorithm 문제' 카테고리의 다른 글

[Programmers] 기능개발  (0) 2021.10.07
[Programmers] 베스트앨범  (0) 2021.10.07
[Programmers] 전화번호 목록  (0) 2021.10.07
[Programmers] 완주하지 못한 선수  (0) 2021.10.07
[BaekJoon] 백준 17471번 게리맨더링  (0) 2021.10.07