Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 수신자 대상 다르게
- 누적합
- BFS
- gRPC
- 깊게 생각해보기
- prg 패턴
- 쿠키
- docker
- 숫자 블록
- spring event
- 좋은 코드 나쁜 코드
- 코드 계약
- 프로그래머스
- branch 전략
- 카카오
- 객체지향패러다임
- 완전탐색
- piplining
- 구현
- jwt 표준
- 검색어 추천
- 셀러리
- 레디스 동시성
- 이분탐색
- 알람 시스템
- AWS
- 결제서비스
- 트랜잭샨
- 백준
- 디버깅
Archives
- Today
- Total
코딩관계론
[프로그래머스] 피로도 본문
반응형
문제 이해하기
주어진 피로도(K)를 사용해서 최대한 많은 던전을 탐험하는 문제였다.
던전의 최대 개수가 8개이니 가장 연산이 많은 경우의 수는 65,536이다, 따라서 완전탐색을 사용하면 시간안에 풀 수 있다.
문제 해결 방법 설명하기
1. 모든 경우의 수를 탐색
아래의 코드를 보면 visited 배열을 사용해 던전의 방문 유무를 확인하고, 해당 던전의 피로도 조건을 만족한다면 일단 던전에 입장해서 탐색을 진행한다. 이 방법을 사용하면 모든 경우의 수를 탐색할 수 있다.
def search(k, dungeons, visited):
ans = 0
for i in range(len(dungeons)):
if visited[i] == False and dungeons[i][0] <= k:
visited[i] = True
ans = max(ans, search(k - dungeons[i][1], dungeons, visited) + 1)
visited[i] = False
코드
def search(k, dungeons, visited):
ans = 0
for i in range(len(dungeons)):
if visited[i] == False and dungeons[i][0] <= k:
visited[i] = True
ans = max(ans, search(k - dungeons[i][1], dungeons, visited) + 1)
visited[i] = False
return ans
def solution(k, dungeons):
visited = [False] * len(dungeons)
return search(k, dungeons, visited)
if __name__ == "__main__":
k = 80
dungeons = [[80, 20], [50, 40], [30, 60], [20, 30]]
print(solution(k, dungeons)) # 3
반응형
'개발 > 알고리즘' 카테고리의 다른 글
[프로그래머스] 예산 (0) | 2024.04.22 |
---|---|
[프로그래머스] 등굣길 (0) | 2024.04.22 |
[프로그래머스] 퍼즐 조각 (0) | 2024.04.16 |
[프로그래머스] 아이템 줍기 (0) | 2024.04.14 |
[프로그래머스] 징검다리 (0) | 2024.04.13 |