컴공 일기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를 선물하세요.
-
하 빨리 수능 끝나고 롤하고싶다
-
2일연속 밤샘 4
할만한가요? 해보신분 계신가요?
-
이대 1
삼대
-
아무말이나해줌 24
ㄱ
-
나 병신인가 3
차단버튼 눌러놓고 풀려고 봤는데 왜 모아보기에 안뜨나 했네
-
카페인이나 커피는 아무리 먹어도 잠 잘옴… 잠은 평소대로 오고 속은 버릴대로 버리는듯 하….
-
ㄱ이 맞는걸 어떻게 구하는지 모르겠어요 계산해보면 A 온도 1로 두면 B온도는...
-
새벽의 야심한.. 선넘질 ㄱㄴ
-
무슨 처음부터 lpl이노
-
최적t 사문커리 타신분들께 질문 크로니클선지 다아는내용인데 기선제압에서 추가적으로...
-
잠이 안 와요
-
요즘 하도 좋은 대학나오고 몽충몽충한 애들이 많은디……
-
작년 텔그로는 메디컬 빼고 전부 됐던거 같긴한데 올해는 남자라고 안 보여주네 작년엔 보여주던데
-
걍 다크나이트임 3
죽어가는 오르비 메타 굴려주는 그저 goat
-
왜 나 잘 때만 이런 메타 뜨는데!!
-
지금 이렇게 싸워도 수능은 잘볼거라는 자신감 난 자러가야지
-
이대생
-
오자마자 저런 훌리글을 보넹,,
-
수십개의 글들과 수백개의 댓글들이 나를 조롱하고 내가 쓴 글이 메타를 좌지우지하는...
-
두근두근 lpl은 만날려나
-
어캐했냐
-
보통 인기있는 신작은 챙겨보는 편인데 1위 제목 뭐냐..
-
글삭하고 튀었다 9
ㅋㅋ
-
미분 파트 푸는데 10번 초중반? 부터 15번 22번 도배... 3~4문제 빼고 다...
-
우리 다 남자 아니었음? 여붕이가 있다고?
-
로 널 보낼 수는 없다고~
-
순수 joat메타
-
오래된 생각이다.
-
대학축제 정리
-
하 뭐지 진짠가... 잘 찾아보면 불가능은 아닐 것 같기도 한데
-
이대 없었으면 내가 존재할 수 없었음 어무니가 이대 다니다가 옆에 있는 학교 다니는...
-
수험생은.
-
최종뎀 정상화 해야겠지?
-
주의) 디시발 행동하는 양심이지만 버러지인 놈들이라 글이 좀 더러울수 있음.....
-
에체능 준비하는 고3인데요 9모 생윤 거의 낮은 4여서 5라고 보시면 되고 사문은...
-
남자분들 쪽지 그만보내세요
-
너무 높은 산처럼 느껴짐...
-
무슨 누구네 대학이 누구 대학보다 낫네 해도 전세계 랭킹은 사실 다 비슷비슷함…....
-
분명 일주일전까지만해도 되게 의욕넘치고 목표의식이 있었는데 사흘전부터 걍 다...
-
이대 약대 주면 5
기어서라도 갈듯
-
소신발언 0
성적도 지방약>여대약대 아님? ㅋㅋ 이게말이되나
-
도대체 저분 정체가뭐지 25
건동 떨어지고 이대붙은 농어촌 반수생이 중대를 논하면서 이대 올려치기하는 이 상황을...
-
2호선임 동의시 개.추
-
ㄱ이 왜 틀렸는지 궁금합니다. 가시광선 영역은 좀 다른가요?
-
다들 다 놀러오는곳에 공부하러 간다는게
-
물어볼거잌ㅅ어요‘ㅜ
질문 받나요??
남겨주시면 아는 선에서 답해드리겠습니다.
컴공에서 나이 많은 사람 몇살까지 보셨나요??
개인플레이가 지배적인 분위기라… 나이를 잘 모릅니다만 남자의 경우 26-28에 졸업하는 경우가 보편적이라고 생각은 합니다.