반응형
🔺 문제
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
🔺 코드
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
|
import java.util.*;
import java.io.*;
class Solution {
static int cnt = 0;
static boolean[] visited;
public int solution(int k, int[][] dungeons) {
visited = new boolean[dungeons.length];
back(0, k, dungeons);
return cnt;
}
private static void back(int depth, int k, int[][] arr) {
for(int i = 0 ; i < arr.length ; i++) { // 모든 경우의 수 확인
if(!visited[i] && arr[i][0] <= k) { // 방문한 적 없고, 현재 피로도가 필요 피로도보다 높다면
visited[i] = true;
back(depth + 1, k - arr[i][1], arr); // depth와 피로도 갱신
visited[i] = false;
}
}
cnt = Math.max(cnt, depth); // 최댓값 갱신
}
}
|
cs |
✅ 해결 아이디어
✔ 완전탐색 -> DFS (재귀)
- DFS로 모든 경우의 수 탐색
- 던전 탐색 가능한 모든 방법에 대해 탐색하며, 최대 던전 수 갱신
💥 유의사항
• 던전 개수가 최대 8개라 완전탐색해도 시간이나 메모리 상 문제 X
• 종료 조건 X. = 모든 경우의 수 순회
(예 : 1->2->3, 1->3->2, 2->1->3, ...)
💬 느낀 점
완전탐색하려면 재귀를 사용할테니 DFS / 백트래킹을 잘 활용해야겠다,,
1회독 | 2회독 | 3회독 | 4회독 | 5회독 |
V | 10.12 | 240221 | 240726 |
(+ 2회독 10.12)
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
|
import java.util.*;
class Solution {
static int k;
static int[][] dungeons;
static boolean[] visited;
static int cnt = 0;
public int solution(int k, int[][] dungeons) { // k : 현재 피로도 | dungeons[][] : [최소 필요도, 소모 피로도]
this.k = k;
this.dungeons = dungeons;
visited = new boolean[dungeons.length];
back(0, k);
return cnt;
}
private static void back(int depth, int k) {
for(int i = 0 ; i < dungeons.length ; i++) { // 🔔 모든 경우의 수 확인
if(!visited[i] && dungeons[i][0] <= k) { // 방문한 적 없고, 필요 피로도보다 현재 피로도가 높다면
visited[i] = true;
back(depth + 1, k - dungeons[i][1]); // depth와 피로도 갱신
visited[i] = false;
}
}
cnt = Math.max(cnt, depth);
}
}
|
cs |
(참고)
[프로그래머스] 피로도 - JAVA
프로그래머스 피로도 - JAVA 문제 설명 XX게임에는 피로도 시스템(0 이상의 정수로 표현합니다)이 있으며, 일정 피로도를 사용해서 던전을 탐험할 수 있습니다. 이때, 각 던전마다 탐험을 시작하기
dlee0129.tistory.com
[프로그래머스] 피로도 - JAVA [자바]
프로그래머스 코딩테스트 고득점 Kit 부수기
velog.io
[프로그래머스] 피로도(JAVA)
https://school.programmers.co.kr/learn/courses/30/lessons/87946 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는
lollaziest.tistory.com
반응형
'코테 > 프로그래머스' 카테고리의 다른 글
[프로그래머스/Lv. 3] 네트워크 (JAVA) (0) | 2023.09.14 |
---|---|
[프로그래머스/Lv. 2] 타겟 넘버 (JAVA) (0) | 2023.09.13 |
[프로그래머스/Lv. 2] 소수 찾기 (JAVA) (0) | 2023.09.13 |
[프로그래머스/Lv. 2] n^2 배열 자르기 (JAVA) (0) | 2023.09.13 |
[프로그래머스/Lv.2] 점프와 순간 이동 (JAVA) (0) | 2023.09.07 |