본문 바로가기

코딩테스트/코드트리

[코드트리] 개발자들의 거리두기

목차

    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