본문 바로가기
알고리즘/programmers

42578: 위장[해시]

by cjw.git 2021. 1. 5.

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


1. 문제

  • 스파이들은 매일 다른 옷을 조합하여 입어 자신을 위장합니다.
    예를 들어 스파이가 가진 옷이 아래와 같고 오늘 스파이가 동그란 안경, 긴 코트, 파란색 티셔츠를 입었다면 다음날은 청바지를 추가로 입거나 동그란 안경 대신 검정 선글라스를 착용하거나 해야 합니다.

    종류 이름

    얼굴 동그란 안경, 검정 선글라스
    상의 파란색 티셔츠
    하의 청바지
    겉옷 긴 코트
    스파이가 가진 의상들이 담긴 2차원 배열 clothes가 주어질 때 서로 다른 옷의 조합의 수를 return 하도록 solution 함수를 작성해주세요.

 


2. 문제의 조건

  • 각 행은 [의상 이름, 의상 종류]로 이루어져 있다.
  • 1<= 의상의 수 <= 30
  • 중복 이름 의상 존재 x

 


더보기

3. 문제 접근

  • 시간 복잡도

    추후 반영

 

  • 아이디어

    대부분의 해시 문제는 메모리제이션 기법을 사용하면 된다고 생각하였습니다.
    그래서 종류별로 개수를 파악하였습니다.
    의상의 종류는 4가지, 조합의 수에 따라서 기존 (종류 + 1) * ... 를 수행합니다.

    +1를 하는 이유는 이 종류의 옷을 입지 않는다는 선택도 포함되기 때문입니다.

 


4. 풀이 방법

  • clothes를 dict에다 추가한다.
  • 만약 data안에 존재한다면, 그 종류를 1 더해주고
    존재하지 않다면 값을 1로 새롭게 만든다.
  • 그 종류의 조합 공식에 따라 (종류 개수 + 1) * (...)을 수행한다.

 


5. 소스코드

 


 

cjw.git@gmail.com

'알고리즘 > programmers' 카테고리의 다른 글

42584: 주식가격[스택/큐]  (0) 2021.01.05
42579: 베스트앨범[해시]  (0) 2021.01.05
42839: 소수찾기[완전탐색]  (0) 2021.01.02
42883: 큰 수 만들기[그리디]  (0) 2020.12.18
42576: 완주하지 못한 선수[해시]  (0) 2020.12.18

댓글