티스토리 뷰
문제주소
programmers.co.kr/learn/courses/30/lessons/60062
내 풀이
from collections import deque
from itertools import permutations
# 항상 index 처리가 어렵다. 맨 앞, 뒤 index는 특별하게 확인해주기
def checkVisited(weak, friends):
index = 0
visited = [False for _ in range(len(weak))]
for friend in friends:
dist = 0
while friend >= dist and index < len(weak)-1:
visited[index] = True
index += 1
dist += weak[index] - weak[index - 1]
# 끝부분 index도 처리
if friend >= dist:
visited[index] = True
if False in visited:
return False
else:
return True
def solution(n, weak, dist):
answer = 1
if len(weak) == 1:
return answer
q = deque(weak)
while answer <= len(dist):
# 순열으로 모든 경우 탐색
for friends in list(permutations(dist, answer)):
# 시작점을 변경
for _ in range(len(weak)):
point = q.popleft()
q.append(point + n)
# 가능한 경우 체크하고 가능하다면 종료
if checkVisited(q, friends):
return answer
# 탐색하는 친구의 수 추가(순열의 수 증가)
answer += 1
# 다 탐색했는데도 안된다면 탐색이 불가한 경우
return -1
푸는데 상당히 오래걸렸고, 카카오 풀이에서 제공되는 힌트도 참고했다. 결국 스터디 시간안에 못 풀어서 다른 사람 풀이도 참고했다. 😂 약간 어거지로 끼워맞춘 느낌이지만 결국 풀려서 시원하다.
완전탐색 문제이다. 카카오 문제는 느낌뿐인지 모르겠지만 완전탐색이 많이 나오는 것 같다. 원형을 돌리는 경우 맨 앞 숫자를 빼고 뒤에 +n으로 더해주면서 그 차이만 유지하며 돌린다. (원형으로 주어진 경우 탐색 방식 --> 이렇게 탐색하면 시계방향, 반시계방향이 큰 의미가 없다.) queue를 사용하여 그 배열 값을 차이만 유지한 채 바꿔준다.
checkVisited에서 index 처리에 오래걸렸다. ✨index 자신이 없다면 맨 앞, 뒤 index는 특별 케이스로 처리해주자!✨ visited를 두어 bit mask로 방문 여부를 체크해주며 확인했다.
다른 사람 풀이
BFS, DFS로도 많이 풀었다고 한다.
정리
원형으로 주어진 탐색방식, 순열로 탐색 가능한 친구의 배열을 늘려가며 탐색, bit mask, index 처리가 이 문제의 주요 키워드였다.
언제나 그렇든 문제를 해석하려고 하기보다는 가능하면 문제가 요구하는 대로 풀도록 하자!
'Algorithm > 문제풀이 Python' 카테고리의 다른 글
프로그래머스 레벨3 - 카카오 2018 셔틀버스 (0) | 2021.01.26 |
---|---|
프로그래머스 레벨3 - 카카오 2019 인턴십 불량 사용자 (0) | 2021.01.23 |
프로그래머스 레벨3 - 카카오 2019 길 찾기 게임 (0) | 2021.01.19 |
프로그래머스 레벨3 - 카카오 2020 기둥과 보 설치 (0) | 2021.01.13 |
프로그래머스 레벨3 - 카카오 2018 추석트래픽 (0) | 2021.01.09 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 카카오
- Spring
- 운영체제
- JPA
- 글쓰기미션
- OS
- 객체지향
- React
- TCP/IP
- 학습로그
- 알고리즘
- javascript
- java
- 네트워크
- 마스터즈코스
- 월간회고
- 내부코드
- 코드스쿼드
- Transaction
- 인증
- CS
- python
- 우아한테크코스
- 우테코수업
- DB
- 회고
- 모의면접준비
- TIL
- 개발공부일지
- JS
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함