BOJ 14718 용감한 용사 진수

LONGNEW·2021년 2월 9일
0

BOJ

목록 보기
152/333

https://www.acmicpc.net/problem/14718
시간 1초, 메모리 256MB
input :

  • N K(1 ≤ K ≤ N ≤ 100)
  • 힘, 민첩, 지능(0 ≤ 힘, 민첩, 지능 ≤ 1000000)

output :

  • K명의 병사를 이길 수 있게 하는 최소의 스탯 포인트를 출력

조건 :

  • 적 병사가 가진 힘보다 진수의 힘이 크거나 같고,
  • 적 병사가 가진 민첩보다 진수의 민첩이 크거나 같고,
  • 적 병사가 가진 지능보다 진수의 지능이 크거나 같으면,
  • 진수는 그 적 병사를 이길 수 있다.

그는 용감했다.....
결국 풀이까지 보고 나서 다시 문제를 보니..
N의 범위가 매우 작다..
그렇다 컴퓨터한테 시키는 거였다.

x, y의 모든 경우를 붙잡고, z를 오름차순으로 정렬해서 k명의 병사를 잡을 수 있을 때 멈추는 것이다.
해야 할 것은 정렬과, cnt의 초기화 뿐.. 여전히 나는 멍청하다.. 쿸쿠

import sys

n, k = map(int, sys.stdin.readline().split())
data = []
xs = []
ys = []
for i in range(n):
    temp = list(map(int, sys.stdin.readline().split()))
    data.append(temp)

for i in range(n):
    xs.append(data[i][0])
    ys.append(data[i][1])

data.sort(key=lambda x:x[2])

ans = 9999999999
for x in xs:
    for y in ys:
        z = 0
        cnt = 0
        for i in range(n):
            if data[i][0] <= x and data[i][1] <= y:
                cnt += 1
                z = data[i][2]
                if cnt == k:
                    break
        if cnt == k:
            ans = min(ans, x + y + z)
print(ans)

0개의 댓글