반응형
< 외벽 점검 >
💬 문제 설명
레스토랑을 운영하고 있는 "스카피"는 레스토랑 내부가 너무 낡아 친구들과 함께 직접 리모델링 하기로 했습니다. 레스토랑이 있는 곳은 스노우타운으로 매우 추운 지역이어서 내부 공사를 하는 도중에 주기적으로 외벽의 상태를 점검해야 할 필요가 있습니다.
....
| 입력 (n) | 입력(weak) | 입력(dist) | 출력(result) |
| 12 | [1, 5, 6, 10] | [1, 2, 3, 4] | 2 |
| 12 | [1, 3, 4, 9, 10] | [3, 5, 7] | 1 |
💬 입력 조건
- n ( 1 ≤ n ≤ 200. n은 자연수 )
- weak의 길이 ( 1 ≤ 길이 ≤ 15 ), weak ( 0 ≤ weak ≤ n - 1 ,weak는 자연수)
- dist의 길이 ( 1 ≤ 길이 ≤ 8 ), dist ( 0 ≤ dist ≤ 100 , dist는 자연수)
💬 출력 조건
- 취약점을 보수하기 위해 필요한 친구의 최소 수
- 보수가 불가능한 경우 -1 return
✍ 문제요약
n( 0 ~ n - 1)크기의 레스토랑 외벽의 취약지점 위치가 weak라는 리스트로 주어진다. 1시간 동안 친구들과 함께 취약지점을 보수해야한다. 이 때, 1시간 동안 움직일 수 있는 거리값을 가진 친구 목록을 담은 dist 리스트도 주어진다. 각각의 친구들은 시계, 반시계 방향으로 움직일 수 있고 모든 지점에서 출발할 수 있다. 이 때, 보수가능한 친구들의 최소 수를 구하여라.
💯 문제링크
프로그래머스의 "외벽 점검"과 동일한 문제이다.
https://school.programmers.co.kr/learn/courses/30/lessons/60062
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
✅ 문제 풀이
혼자 힘으로 해결하지 못했고, 다양한 풀이와 답지를 봐도 이해가 되지않아 유튜브 영상을 참고했다.
영상에서 설명을 잘 해주기 때문에 이것만 참고하면 충분히 풀 수 있을 것이다.
https://www.youtube.com/watch?v=yYc2KiCSIoA
from itertools import permutations
def solution(n, weak, dist):
Len_weak = len(weak)
weak = weak + [w + n for w in weak]
Min = int(1e9)
for sp in range(Len_weak):
for case in permutations(dist, len(dist)):
cnt = 1
Now = sp
for i in range(1, Len_weak):
Next = sp + i
diff = weak[Next] - weak[Now]
if diff > case[cnt - 1]:
Now = Next
cnt += 1
if cnt > len(dist) : break
if cnt <= len(dist):
Min = min(Min, cnt)
return -1 if Min == int(1e9) else Min반응형
'코딩테스트 > 이것이 코딩 테스트다' 카테고리의 다른 글
| [이것이 코딩 테스트다 with Python] Chapter 13. DFS/BFS - 연구소 (2) | 2023.12.21 |
|---|---|
| [이것이 코딩 테스트다 with Python] Chapter 13. DFS/BFS - 특정 거리의 도시 찾기 (2) | 2023.12.20 |
| [이것이 코딩 테스트다 with Python] Chapter 12. 구현 - 치킨배달 (0) | 2023.12.13 |
| [이것이 코딩 테스트다 with Python] Chapter 12. 구현 - 기둥과 보 설치 (2) | 2023.12.12 |
| [이것이 코딩 테스트다 with Python] Chapter 12. 구현 - 뱀 (1) | 2023.12.08 |
