2018. 7. 9. 15:53, 알고리즘/BOJ
https://www.acmicpc.net/problem/8903
K >= 5이면 그냥 각 속성의 최댓값의 합으로 보아도 무방함을 쉽게 알 수 있습니다. 이제 K <= 4일 때가 문제인데, 직접 N Combination K를 처리하면 무조건 시간초과가 발생할 것입니다. 대신 아래와 같이 생각하면 효율적으로 풀 수 있습니다.
K = 2을 예로 들어보면, 최종적으로 얻은 답은 속성 1의 값이 한 장비에서 오고, 속성 (2,3,4,5)의 값이 다른 장비에서 왔거나
속성 2의 값이 한 장비에서 오고, 속성 (1,3,4,5)의 값이 다른 장비에서 왔거나
속성 (1,3)의 값이 한 장비에서 오고, 속성 (2,4,5)의 값이 다른 장비에서 왔거나
.
.
이런식으로 속성이 최대 2개의 그룹으로 나누어 각기 다른 장비에서 왔을 것입니다. 즉 (1,2,3,4,5)를 K개의 그룹으로 쪼개어 각각의 최댓값을 구한 후 더하면 됩니다. bitmasking을 이용해 코딩했습니다.
'알고리즘 > BOJ' 카테고리의 다른 글
[BOJ] 15792번: A/B - 2 (0) | 2018.07.09 |
---|---|
[BOJ] 14499번: 주사위 굴리기 (0) | 2018.07.09 |
[BOJ] 14503번: 로봇 청소기 (0) | 2018.07.09 |
[BOJ] 14252번: 공약수열 (0) | 2018.07.08 |
[BOJ] 4307번: Ants (0) | 2018.07.06 |
[BOJ] 14427번: 수열과 쿼리 15 (0) | 2018.07.06 |
Comments