728x90
반응형
https://school.programmers.co.kr/learn/courses/30/lessons/87946
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
int visited[8];
int max_cnt;
void dfs(int k, int **dungeons, size_t dungeons_rows, int n) {
if (n > max_cnt)
max_cnt = n;
for (int i = 0; i < dungeons_rows; i++) {
if (!visited[i] && dungeons[i][0] <= k) {
visited[i] = 1;
dfs(k - dungeons[i][1], dungeons, dungeons_rows, n + 1);
visited[i] = 0;
}
}
}
int solution(int k, int** dungeons, size_t dungeons_rows, size_t dungeons_cols) {
dfs(k, dungeons, dungeons_rows, 0);
return max_cnt;
}
- 전역 변수:
- visited: 던전의 방문 여부를 기록한다.
- max_cnt: 탐험한 던전의 최대 개수를 저장한다.
- DFS 함수:
- k: 현재 남은 피로도
- dungeons: 던전 정보가 담긴 2차원 배열
- dungeons_rows: 던전 배열의 행 길이
- n: 현재 탐험한 던전의 개수.
- 현재 탐험한 던전의 수가 max_cnt보다 크면 max_cnt를 갱신한다.
- 각 던전을 순회하며 방문하지 않았고, 최소 필요 피로도를 만족하면 탐험. 탐험 후에는 원상복구하여 다른 경로를 탐색.
- Solution 함수:
- 주어진 피로도 k와 던전 정보를 바탕으로 최대 탐험 던전 수를 계산
- DFS 함수를 호출하여 탐색을 시작하고, 최종적으로 최대 탐험 던전 수를 반환
728x90
'프로그래머스' 카테고리의 다른 글
[프로그래머스/C] 전력망을 둘로 나누기 (0) | 2024.06.23 |
---|---|
[프로그래머스/C] 큰 수 만들기 (0) | 2024.06.22 |
[프로그래머스/C] 가장 큰 수 (0) | 2024.06.22 |
[프로그래머스/C] 주식가격 (0) | 2024.06.22 |
[프로그래머스/C] 특이한 정렬 (0) | 2024.06.21 |