삐까냥의 파도타기
Q1937. 욕심쟁이 판다 본문
map[y][x] 에서의 최대값을 저장하며 검색하는 로직
package ppikanyang; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Q1937 { static int[][] map; static int[][] resultMap; static int mapSize;
public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine());
mapSize = Integer.parseInt(st.nextToken()); map = new int[mapSize+1][mapSize+1]; resultMap = new int[mapSize+1][mapSize+1];
for (int i = 1; i <= mapSize; i++) { st = new StringTokenizer(br.readLine()); for (int j = 1; j <= mapSize; j++) { map[i][j] = Integer.parseInt(st.nextToken()); } }
int maxValue = 0; for (int i = 1; i <= mapSize; i++) { for (int j = 1; j <= mapSize; j++) { resultMap[i][j] = searchMap(i, j); maxValue = Math.max(maxValue, resultMap[i][j]); } }
System.out.println(maxValue+1); }
public static int searchMap(int y, int x) { if (resultMap[y][x] > 0) { return resultMap[y][x]; }
int maxValue = 0;
if (y < mapSize && map[y][x] < map[y+1][x]) { maxValue = Math.max(maxValue, searchMap(y+1, x)+1); }
if (y > 1 && map[y][x] < map[y-1][x]) { maxValue = Math.max(maxValue, searchMap(y-1, x)+1); }
if (x < mapSize && map[y][x] < map[y][x+1]) { maxValue = Math.max(maxValue, searchMap(y, x+1)+1); } if (x > 1 && map[y][x] < map[y][x-1]) { maxValue = Math.max(maxValue, searchMap(y, x-1)+1); }
resultMap[y][x] = maxValue;
return maxValue; } } |
'코딩 > 백준 알고리즘' 카테고리의 다른 글
Q1904. 01타일 (0) | 2019.02.23 |
---|---|
Q2096. 내려가기 (0) | 2019.02.23 |
Q1915. 가장 큰 정사각형 (0) | 2019.02.21 |
Q6359. 만취한 상범 (0) | 2019.02.21 |
Q1309. 동물원 (0) | 2019.02.21 |