-
[프로그래머스] 위장Algorithm/Programmers 2020. 8. 23. 23:13
https://programmers.co.kr/learn/courses/30/lessons/42578
코딩테스트 연습 - 위장
programmers.co.kr
풀이과정
재귀를 이용하여 모든 경우의 수를 구했으나 시간초과가 발생하였다.
그래서 직접 모든 경우의 수식을 세워 문제를 해결했다.
(종류 + 1) * (종류 + 1) .... 을 하게 되면 정답이 나온다. +1을 하는 이유는 그 종류의 장비를 입지 않은 경우이다.
마지막에 -1을 하게 되는데, 최소 한가지의 장비는 착용하기 때문에 모두 벗는 경우는 제외한다.
소스코드
더보기function solution(clothes) { var answer = 0; var clothesType = []; var keys = []; for (var i = 0; i < clothes.length; i++) { var idx = keys.indexOf(clothes[i][1]); if (idx != -1){ clothesType[idx].push(clothes[i][0]); } else { var type = [clothes[i][0]]; clothesType.push(type); keys.push(clothes[i][1]); } } //재귀 시간초과 // function solve(cur, depth, count, sum) { // if (depth == count) { // answer += sum; // return; // } // for (var i = cur; i < clothesType.length; i++) { // if (sum == 0) { // solve(i + 1, depth + 1, count, clothesType[i].length); // } // else { // solve(i + 1, depth + 1, count, sum * clothesType[i].length); // } // } // } for (var i = 0; i < clothesSize; i++) { answer = answer ? answer * (clothesType[i].length + 1) : (clothesType[i].length + 1); } return answer; }
'Algorithm > Programmers' 카테고리의 다른 글
[프로그래머스] 카펫 (0) 2020.08.25 [프로그래머스] 가장 큰 정사각형 (0) 2020.08.25 [프로그래머스] 가장 큰 수 (0) 2020.08.23 [프로그래머스] 조이스틱 (0) 2020.08.22 [프로그래머스] 타겟 넘버 (0) 2020.08.20