컴공 일기248
백준 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를 선물하세요.
-
빡모 시즌 1 치면 보통 80~84나오는데 빡모가 수능보다 난이도 많이 쉬운건가요?...
-
영어 빈칸 4문제 난이도 보통 순서대로 어렵나요?
-
역시 자기객관화 joat과 날먹마인드는 농어촌 평균 ㅋㅋㅋㅋ
-
영어듣기때 와리가리 최소화하려고 도표그려져있는 페이지 접어서 풀라는데 그 접는행위를...
-
킬링캠프 시즌3 2
11월 14일 오픈 ㄷㄷ
-
기만하지마라 1
-
동생이 사문은 ebs 안 봐도 된다고 하는데 이거 맞나요? 2
제가 과탐을 했어서 잘 모르겠는데 ebs분석도 안하고 모의고사도 풀 필요가 없다고...
-
9덮 1
국어 75(비문학 1틀/문학 9틀/언매 1틀) (54/21) 이면 어느정도 인가요?
-
컴포즈커피 맛없 1
밍밍 쓰
-
공부한게 없어서 안볼까 고민중….
-
남초과분위기도별로안맞음..
-
이매진은 7,8호만 풀 수 있습니다 간쓸개는 파이널에 들어있는것만요 10월 한 달...
-
날짜 뭔데 이렇게빨리가
-
정의 부정의가 없는거랑 똑같은건가
-
호감작이란 말 1
프러팅대신 우리말로 씁시다
-
12(찍맞) 13 14 19 21 22 25 26 27 28 29 30...
-
너무 좀 그렇네… 이거 현장에서 푸신 분 레알 존경
-
제바아아아아아ㅏ알 도와주세요 최저러의 앞으로 공부계획을 세워주세요 1
안녕하세요 저는 최저 2합 7을 준비하고 있는 학생입니다 국어(3~4등급) 강기분...
-
70분 소요 독 6번 -3 화작 43번 마킹실수 -2 95점 전반적으로 선지...
질문 받나요??
남겨주시면 아는 선에서 답해드리겠습니다.
컴공에서 나이 많은 사람 몇살까지 보셨나요??
개인플레이가 지배적인 분위기라… 나이를 잘 모릅니다만 남자의 경우 26-28에 졸업하는 경우가 보편적이라고 생각은 합니다.