컴공 일기248
게시글 주소: https://a.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를 선물하세요.
-
좋은총을 갖고와 다 없앤다
-
ㅇㅇ
-
텅텅 비어있음
-
언매기하랑 화작미적중에 뭐가 더 공부량이 많나요?
-
국어 백분위 78-> 84 미적 백분위 82-> 86 영어 2 유지 생지 34-> 높3
-
난이도 어느정도라고 보심요?? 시발점 내용은 아예 삭제하고 난이도 올릴거라는데
-
남들 다 어려워하는 시험지 보고 "1컷 88~90 예측합니다~ 너무 쉬웠어요~"...
-
컷이 껑충뛰는거지 어렵다고 느낄때보다 비교적 할만하다고 느낄때 백분위가 더 낮음 ㅋㅋㅋ
-
컴공 무물 24
아는 선에서 자세히(?) 답해드리겠습니다.
-
강x 100 6
분컷 80점 낮2..
-
어케 1등급이 51%
-
진짜 조미료 이빠이 넣나? 왜 집에서 먹을때는 천연맛나냐
-
백분위 94 2등급 첫 실모인데 커하 찍어서 기분 아주 조음 이대로만 가자
-
내 삶이 어찌 이렇게 됐을까
-
물리는어떤곳일까... 저희 화학팀은 전원 현생인싸(확인된오타쿠없음)던데 흑흑
-
무보정기준으로
-
ㅈㄴ 기대되네요 1년더 ㄱㄱ혓
-
점메추 받아요 4
-
6모 14121 (99 70 91 99) 9모 13113(원점수 100 81 47...
-
릴스 끊어야지 이제
-
13번 대충 쉬워보이는 문제 근데 1트에 안됨 ㅋㅋ 15번 대충 쉬운 문제 근데...
-
뒷북 지송
-
아침에 일어나서 6시까지 기출 + 실모 과목별로 쭉 풀고 피드백 하고 나면 지쳐서...
-
이감 하반기 8차 83-1 션티 마피 시즌2 88-2 딴건모르겟고 40번에서...
-
한껏 부르고 목 죽을예정
-
또 늦잠잣는데 2
어카지
-
고대 영어 0
1000점 만점에 3점감점이 어느정도인건가요? 현역이라 국어 수학으로 따지면...
-
수학 개념 솔직히 아는데 뭔가 딱 깨달음이 없다랄까…? 느끼는게 없는 느낌..?이런...
-
문제까지 다 푸는편이신가요 그냥 읽으면서 뇌 스트레칭만 하시나요
-
군수생 달린다 6
꾹참고정진하라
-
경북대 경영 vs 세종대 경영 강원도 사는데 골라줘 남자임
-
구국리 2
구국리
-
뭐가 더 어렵나요?
-
악깡버하는게 맞겠죠???
-
어떤 국잘수망 오르비언한테 수학마저 따잇당하는 꿈을 꿈 하다하다시발이런꿈을다꾸네...
-
어디목표로하심다들
-
ㅅㅂ ㅋㅋㅋ
-
온톨로지.. 2
스키마..
-
지금 시점에서 올오카랑 아수라 중에 뭐 듣는게 좋나요? 2
앱스키마 완강 6모 3등급 9모 3등급 입니다.. 지금 올오카랑 아수라 중에서...
-
제가 좋아하는 호랑이 임티 사줌
-
종이 안 꾸겨서 옴+레드불 줌 캬
-
지구황 분들 1
복각에서 위도 한칸,경도 한칸당 각거리는 어디서든 전부 30도 잖아요 근데 이훈식쌤...
-
등차, 등비수열에서는 왜 부분에서 전체를 얻을 수 있는 건가요? 6
일반적으로 부분적으로 주어져 있는 수열에서 전체의 수열을 파악하는 건 안된다고 알고...
-
저도 몰라요 궁금하다
-
나흘 누적 공부시간 20시간임 ㅅㅂ
-
점메추해드려요 34
고고
-
안성탕면 <-- 봉지라면계의 고트
질문 받나요??
남겨주시면 아는 선에서 답해드리겠습니다.
컴공에서 나이 많은 사람 몇살까지 보셨나요??
개인플레이가 지배적인 분위기라… 나이를 잘 모릅니다만 남자의 경우 26-28에 졸업하는 경우가 보편적이라고 생각은 합니다.