less than 1 minute read

42578. 의상 / c++ / level2 / 8분

문제 및 코드

접근 방식

자료구조 / 해시

  1. 매일 다른 옷을 입어야 하고 종류별로 최대 1가지 의상을 착용하거나 착용하지 않을 수 있는데, 최소 1가지의 옷은 입어야 한다.
  2. 문제를 보고 든 생각은 종류 (카테고리) 별로 옷을 나누고, 그 옷들의 조합의 수를 구하는 것이었다.
  3. 이 때 주의해야 할 점은 3가지이다.
    1. 각 종류별로 1가지를 입거나 입지 않을 수 있기 때문에 종류의 가짓수 + 1을 한 값에서 조합을 구해야 한다.
    2. 최소 1개의 옷을 입어야 하기 때문에 모두 입지 않은 경우는 빼야한다.
    3. 마지막으로 옷의 종류가 1가지만 있는 경우 1번과 2번이 상충되어 해당 종류의 가짓수를 그대로 출력한다.

생각해 볼 점

  1. 챌린저 문제를 한참 고민하다 시간이 촉박하여 미들러 문제를 풀게 되었다.
  2. 해싱을 통해 데이터를 정리 (나는 이것을 재료 손질이라고 부른다.) 하고 그 데이터를 가지고 추가적인 로직(여기서는 조합)과 예외 조건 등을 처리하는 문제였다.
  3. 해싱은 그 자체로 문제 해결 알고리즘이 될 수 있지만, 이렇게 문제를 풀기 위한 사전 작업이 될 수도 있다는 점을 다시 한번 깨달았다.

해시태그

#99클럽 #코딩테스트 준비 #개발자 취업 #항해99 #TIL