Computer Science/Algorithm
[Baekjoon] Greedy - 2891 카약과 강풍
ddu0422
2023. 8. 15. 14:40
문제
2891번: 카약과 강풍
첫째 줄에 팀의 수 N, 카약이 손상된 팀의 수 S, 카약을 하나 더 가져온 팀의 수 R이 주어진다. (2 ≤ N ≤ 10, 1 ≤ S, R ≤ N) 둘째 줄에는 카약이 손상된 팀의 번호가 주어진다. 팀 번호는 중복되지 않
www.acmicpc.net
풀이
"""
체육복 문제와 동일
"""
n, s, r = map(int, input().split())
damaged = list(map(int, input().split()))[:s]
spares = list(map(int, input().split()))[:r]
def solution(n, damaged, spares):
teams = ['O'] * n
# 카약이 손상된 팀
for value in damaged:
teams[value - 1] = 'X'
# 여분을 가져왔지만 카약이 손상된 팀
for spare in list(set(spares) & set(damaged)):
teams[spare - 1] = 'O'
# 카약 여분이 있는 팀
for sapre in list(set(spares) - set(damaged)):
teams[sapre - 1] = 'S'
# 카약을 주고 받은 팀
for i in range(n - 1):
if [teams[i], teams[i + 1]] in (['S', 'X'], ['X', 'S']):
teams[i], teams[i + 1] = 'O', 'O'
return teams.count('X')
print(solution(n, damaged, spares))