문제
https://school.programmers.co.kr/learn/courses/30/lessons/60062?language=python3
풀이 & 소스코드
from itertools import permutations
def solution(n, weak, dist):
answer = len(dist) + 1
# 취약점 길이를 두배로 늘리기
weak_len = len(weak)
for i in range(weak_len):
weak.append(weak[i] + n)
# 친구의 순열을 뽑는다.
friends_list = list(permutations(dist, len(dist)))
# 취약점 시작점 모든 경우의 수
for start in range(weak_len):
# 친구 순열 모든 경우의 수
for friends in friends_list:
# start 취약점에 친구 한명 놓기
count = 1
position = weak[start] + friends[count-1]
for index in range(start, start + weak_len):
# 현재 친구 포지션이 모든 취약점을 다 커버할 수 있는지 체크
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):
return -1
return answer
'💡Problem Solving > Programmers' 카테고리의 다른 글
[프로그래머스] 숫자 변환하기 (Python) (0) | 2023.03.07 |
---|---|
[프로그래머스] 덧칠하기 (Python) (0) | 2023.03.07 |
[프로그래머스] 괄호 변환 (Python) (0) | 2022.11.17 |
[프로그래머스] 자물쇠와 열쇠 (Python) (0) | 2022.11.16 |
[프로그래머스] 신고 결과 받기 (Java) (0) | 2022.01.20 |