컴공 일기248
게시글 주소: https://orbi.kr/00068962554
백준 1937 DP / DFS 융합 문항 풀이
소감 : 본질은 DFS인데, DP의 메모이제이션 기법을 쓰지 않으면 시간 초과가 난다.
탐색 문제들은 제한 시간 + 데이터의 수를 적절히 참조하며 Time Complexity를 따져보는 것이 첫 번째다.
완전 탐색을 해야하는데, 시간이 넉넉하다면 DFS 논리 하나로 가볍게 끌고가도 되지만 데이터 수가 생각보다 많아
제한 시간 내 모든 탐색이 불가능할 것 같으면 DP 냄새를 맡을 줄 알아야 한다.
아니면 더 근본적으로 완전 탐색 상황을 의심해볼 수도 있지만…
대놓고 DFS 였으니 이 부분은 이 문제에서 큰 의미없는 접근이겠다.
#include <iostream>
#include <algorithm>
using namespace std;
// 상 -> 하 -> 좌 -> 우 순으로 DFS 탐색 순서를 정한다.
int dx[] = {-1, 1, 0, 0};
int dy[] = {0, 0, -1, 1};
int forest[501][501];
int DP[501][501];
int N; //find_max의 참조를 위해서 전역변수 선언
int find_max(int i, int j) {
if (DP[i][j] > 0) return DP[i][j]; // 메모이제이션
DP[i][j] = 1;
for (int k = 0; k < 4; ++k) {
int next_x = i + dx[k];
int next_y = j + dy[k];
if (0 <= next_x && next_x < N && 0 <= next_y && next_y < N) {
if (forest[i][j] < forest[next_x][next_y]) {
DP[i][j] = max(DP[i][j], find_max(next_x, next_y) + 1);
}
}
}
return DP[i][j];
}
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int res = -1; // 결과 변수
cin >> N;
for (int i = 0; i < N; ++i) {
for (int j = 0; j < N; ++j) {
cin >> forest[i][j];
}
}
for (int i = 0; i < N; ++i) {
for (int j = 0; j < N; ++j) {
res = max(res, find_max(i, j));
}
}
cout << res << “\n”;
return 0;
}
0 XDK (+0)
유익한 글을 읽었다면 작성자에게 XDK를 선물하세요.
-
진짜 농담이 아니라 사설 풀면 매체 주룩주룩 틀리는데 해결책 잇음요?? 원래 매체는...
-
오늘은 어제 현대시 문제와 달리 괴랄한 언매 문제로 돌아왔습니다 (모티브는 22수능...
-
20분박고못푼사람을뭐라고함아.30풀껄그랬나양모 22 30 진짜 개매움
-
경찰대 1
경찰대 추합으로 붙기라도 하면 잘한건가요? 보통 경찰대 합격할 실력이면 연고대...
-
장모 야물딱지네 3
쉽긴해도 이정도면 적당하고 납득할만한 난이도인듯
-
다른 사설이랑 이감 점수 차이가 너무 큰데 이게 맞나 2
이감 제외 사설 점수 - 이감 점수가 10점은 기본이고 진짜 심할때는 20점까지 난적도 있는데 뭐지
-
진북 3
역자극기가 되면 진북의 위치가 반대가 되나요? 그럼 진북의 위치가 변하지...
-
내가 뭐 최상위권 의대갈 사람도 아니고 정신차리고 화작으로 감
-
22 30틀 22에ㅜ모든걸걸엇는ㄷ시발시발세발......못풂.....으ㅢ시발
-
경제관념 개 ㅆㅎㅌㅊ
-
문제 뭐올릴까요 0
15/22번급 수학 1 vs 수학 2 vs 준킬러 수학1
-
충분하게 해결을 못해서 재업합니다.. 2주 동안 공부량이나 방향 어떤지 조언...
-
만약 cos 알파= 1/9라고 해서 cos 1/2알파 = 1/18이 되는 건 아니죠?
-
"시세 다 주고 사는 LH 매입 임대, 시장 자극 우려 크다" 1
정부가 8·8부동산대책 일환으로 수도권 미분양 주택 매입 확약과 서울 내 임대주택용...
질문 받나요??
남겨주시면 아는 선에서 답해드리겠습니다.
컴공에서 나이 많은 사람 몇살까지 보셨나요??
개인플레이가 지배적인 분위기라… 나이를 잘 모릅니다만 남자의 경우 26-28에 졸업하는 경우가 보편적이라고 생각은 합니다.