본문 바로가기
코딩 테스트/구현

외벽 점검

by hazel_ 2021. 1. 23.

p. 335

from itertools import permutations


def solution(n, weak, dist):
    length = len(weak)
    for i in range(length):
        weak.append(weak[i] + n)

    answer = len(dist) + 1

    # 0부터 length-1까지를 시작점으로 설정
    for start in range(length):
        # 친구를 나열하는 모든 경우의 수 각각에 대해서 확인
        for friends in list(permutations(dist, len(dist))):
            count = 1  # 투입할 친구의 수
            # 해당 친구가 점검할 수 있는 마지막 위치
            position = weak[start] + friends[count - 1]
            # 시작점부터 모든 취약 지점을 확인
            for index in range(start, start + length):
                # 점검할 수 있는 위치를 벗어나는 경우
                if position < weak[index]:
                    count += 1
                    if count > len(dist):
                        break
                    position = weak[index] + friends[count - 1]
            answer = min(answer, count)

    if answer > len(dist):
        answer = -1

    return answer

'코딩 테스트 > 구현' 카테고리의 다른 글

치킨 배달  (0) 2021.01.22
기둥과 보 설치  (0) 2021.01.20
  (0) 2021.01.19
자물쇠와 열쇠  (0) 2021.01.19
게임 개발  (0) 2021.01.19

댓글