Algorithm(CodeTree, Python)/완전탐색3

[코드트리 기준을 새로 설정하여 완전탐색] 독서실의 거리두기 5 Python

kurooru 2022. 12. 31. 10:57
# n 입력
n = int(input())
# study_cafe 입력
study_cafe = input()

# 함수들
# get_max_dist(curr_study_cafe)
def get_max_dist(curr_study_cafe):

    # people_pos
    people_pos = []

    # curr_study_cafe 돌면서
    for i in range(n):
        # 사람이 있으면
        if curr_study_cafe[i]:
            # people_pos에 기록
            people_pos.append(i)
    
    # people_num -> 현재 독서실에 있는 사람의 수
    people_num = len(people_pos)

    # curr_min_dist
    curr_min_dist = sys.maxsize

    for i in range(people_num - 1):
        
        # curr_dist
        curr_dist = people_pos[i+1] - people_pos[i]
        
        # curr_min_dist update
        curr_min_dist = min(curr_min_dist, curr_dist)

    # 반환
    return curr_min_dist

# simulate(curr_idx)
def simulate(curr_idx):

    # 리스트로 관리 -> 원소를 바꿔 주기 위함
    temp_study_cafe = []

    # 현재 study_cafe의 모든 원소를
    for i in range(n):
        # temp_study_cafe에 넣어줌
        temp_study_cafe.append(int(study_cafe[i]))

    # curr_idx에 인원 배치
    temp_study_cafe[curr_idx] = 1

    # get_max_dist 반환
    return get_max_dist(temp_study_cafe)

# 설계
import sys

# max_dist
max_dist = 0

# 완전 탐색 시작 -> 모든 빈 곳에 한명씩 넣어봄
for i in range(n):
    # 비어있는 곳이라면,
    if study_cafe[i] == '0':
        # max_dist update
        max_dist = max(max_dist, simulate(i))
    
# 출력
print(max_dist)