링크

위장

난이도

  • 프로그래머스 난이도 2
    • 경우의 수 계산방법을 생각하기

문제요약

  • 옷을 하루 한부위 꼭 입는다면 가능한 경우의 수

접근

  • bfs로 모든 경우 계산?
    • 머리가 복잡
  • 경우의 수 계산
    • 쉬움

경우의 수 계산

  • 같은 옷 종류는 동시에 못입으므로 다른종류의 옷의 갯수 끼리 곱하면 된다.
    • 이는 모든 옷의 종류를 동시에 사용해야 할때의 경우만 보기 때문에 정답이 안된다.
    • 모자, 상의, 하의가 있을대 3개의 옷들을 조합해서 입는 경우의 수만 나온다.
  • 하나의 옷 종류만 입어도 가능하므로 해당 옷을 안입었을때의 경우의 수인 1을 더해서 곱해야 한다.
  • 마지막으로 모든 옷을 안입었을때의 경우가 추가 되어있으므로, -1을 해줘야 한다.

간단 알고리즘

  • 문제에서 주어지는 값으로 [“옷이름”,”옷종류”]로 배열로 주어짐, 이를 dict를 이용해 옷 종류마다 가지고 있는 옷의 갯수를 얻어냄
    • check변수는 dict로 key는 옷 종류, value는 옷의 갯수를 가진다.
    • check[옷종류]에서 해당 key가 존재하면 +1, 없으면 0으로 초기화 하고 +1해준다.
  • 경우의 수 계산
    • check의 모든 value+1을 곱해준다.
    • 마지막에 -1을 해준다.

후기

  • bfs로 하려다 머리아파서 못함
    • bfs,dfs둘다 화가난다.
  • 경우의 수만 확인 하면 되서 곱하기로 간단하게 해결