Code/swea

#2112. [모의 SW 역량테스트] 보호 필름

milkteagood 2020. 3. 23. 21:41
728x90
반응형

출처:https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5V1SYKAaUDFAWu

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

풀이

dfs를 이용한 구현문제이다. 문제에서 구현해야하는 핵심은 투여해야할 배양액을 조합을 통해 선정해야 한다.

예를들어 두께가 4이고 합격기준이 2라고 하면 4개에서 2개 이하를 뽑는 조합은 다음과 같다.

0000 1000 1100 1010 1001 0100 0110 0101 0010 0011 0001 

하지만 1인 부분에 배양액 a와 b로도 또 구분할 수 있으므로 다음과 같이 배열을 만들어야 한다.

0000: 

1000: 1000 2000

1100: 1100 1200 2100 2200

1010: 1010 1020 2010 2020

1001: ...

0100:

0110:

0101:

0010:

0011:

0001: 0001 0002

 

이렇게 배열을 뽑고 나서 보호필름이 연속적으로 합격기준 k를 만족시키는지만 뽑아주면 된다. 따라서 사실상 배열 조합식을 어떻게 짜느냐가 핵심이라고 할 수 있다.

 

그리고 재귀 함수에서 시간을 줄이는 핵심이 있다. 앞서 구한 최솟값이 현재 카운트 값보다 크거나 같으면 더이상 진행할 필요 없으므로 리턴을 시켜주는 코드를 한 줄 넣게되면 시간이 많이 줄어들게 된다. 

 

코드

 

 

728x90
반응형