목차
728x90
반응형
SMALL
📁 문제
N명의 개발자들은 일직선상에 서있습니다. 그들 중 일부는 전염병에 감염되었고, 감염된 개발자는 양수 거리 R 이내에 있는 개발자들을 곧바로 감염시킵니다. 거리 R은 알 수 없는 상황에서, 처음에 감염된 개발자 수의 최솟값을 구하는 프로그램을 작성해보세요.
https://www.codetree.ai/problems/developers-keeping-distance/description
코드트리 | 코딩테스트 준비를 위한 알고리즘 정석
국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요.
www.codetree.ai
📁 풀이
import sys
n = int(input())
r = sys.maxsize
developers = [0] * 1000000
max_dev = 0
infec_devs = []
for i in range(n) :
location, infection = map(int, input().split())
if infection == 0 :
developers[location] = 2
else :
developers[location] = 1
infec_devs.append(location)
if max_dev < location :
max_dev = location
infec_devs.sort()
distance = []
for i in range(len(infec_devs)-1) :
distance.append(infec_devs[i+1]-infec_devs[i])
for i in range(1, max_dev+1) :
if developers[i] == 2 :
for j in range(1, i+1) :
cur_r = sys.maxsize
if developers[i-j] == 1 or developers[i+j] == 1 :
cur_r = j
break
if r > cur_r :
r = cur_r
bins = 0
for i in distance :
if i <= r-1 :
bins += 1
print(len(infec_devs)- bins)
728x90
반응형
LIST