BOJ/미해결

BOJ 1489 - 대결

yanJuicy 2024. 8. 17. 16:47
반응형

문제

https://www.acmicpc.net/problem/1489

 

 

풀이

그리디 문제다

 

a[i]의 값보다 작은 수가 b에 존재한다면, 그 중에서 가장 큰 값을 이겨야 한다

그래야 무승부를 최대한 적게 가져가면서 승리를 최대한 많이 가져가고, 점수를 최대한 많이 가져갈 수 있다

 

구현은 먼저 승리하는 경우의 점수를 더하고, 마지막에 무승부하는 경우에 점수를 더한다

 

 

코드

python

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
result = 0
csort_a = [0* 1002
csort_b = [0* 1002
 
= int(input())
= [int(x) for x in input().split()]
= [int(x) for x in input().split()]
 
for num in a:
    csort_a[num] += 1
for num in b:
    csort_b[num] += 1
 
for i in range(11001):
    while csort_a[i]:
        is_a_win = False
        for j in range(i - 10-1):
            if csort_b[j]:
                result += 2
                csort_a[i] -= 1
                csort_b[j] -= 1
                is_a_win = True
                break
 
        if not is_a_win:
            break
 
for i in range(11001):
    while csort_a[i] and csort_b[i]:
        result += 1
        csort_a[i] -= 1
        csort_b[i] -= 1
 
 
print(result)
 
cs

 

반응형

'BOJ > 미해결' 카테고리의 다른 글

BOJ 2630 - 색종이 만들기  (0) 2024.08.20
BOJ 2477 - 참외밭  (0) 2024.08.19
BOJ 1071 - 소트  (0) 2024.08.16
BOJ 11729 - 하노이 탑 이동 순서  (0) 2024.08.15
BOJ 1083 - 소트  (0) 2024.08.10