-
[Baekjoon] 1932번 정수 삼각형(Java)Java/Baekjoon 2022. 8. 23. 23:14
package baekjoon; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int num = Integer.parseInt(br.readLine()); String[][] str = new String[num][]; int[][] intArr = new int[num][num]; for(int i = 0; i < num; i++) { str[i] = br.readLine().split(" "); // 입력 받은 값 줄 별로 split해서 str[i]에 저장 } for(int i = 0; i < str.length; i++) { for(int j = 0; j < str[i].length; j++) { if(i == 0) { intArr[i][j] = Integer.parseInt(str[i][j]); } // 첫 줄에는 입력 받은 값 그대로 저장 else { if(j == 0) { // j가 0 일 때는 j-1을 하면 음수가 되기 때문에 str[i][j] + [i-1][j]만 함 intArr[i][j] = Integer.parseInt(str[i][j]) + intArr[i-1][j]; }else if(j == str[i].length-1){ // intArr[i-1][j]: 0이기 때문에 [i-1][j-1]만 더함 intArr[i][j] = Integer.parseInt(str[i][j]) + intArr[i-1][j-1]; }else { // 중간 값들 int tmp = Integer.parseInt(str[i][j]); // intArr[i-1][j-1]과 intArr[i-1][j] 중에 큰 값을 str[i][j]과 더하기 intArr[i][j] = intArr[i-1][j-1] > intArr[i-1][j] ? tmp + intArr[i-1][j-1] : tmp + intArr[i-1][j]; } } } } int x = -1; for(int k = 0; k < intArr[num-1].length; k++) { if(intArr[num-1][k] > x) { x = intArr[num-1][k];} } System.out.println(x); } }
첫 줄 5: 삼각형 크기
왼쪽 대각선 아래 or 오른쪽 대각선 아래 중에 큰 값을 입력 받은 값과 더해서 intArr에 저장
j가 0일 경우에는 왼쪽 대각선 아래가 존재하지 않기 때문에 오른쪽 대각선 아래랑 더함
j가 str[i].length-1일 경우에는 오른쪽 대각선 아래가 존재하지 않기 때문에 왼쪽 대각선 아래랑 더함
728x90'Java > Baekjoon' 카테고리의 다른 글
[Baekjoon] 1991번 트리 순회 (Java) (0) 2022.08.29 [Baekjoon] 11725번 트리의 부모 찾기 (Java) (0) 2022.08.28 [Baekjoon] 15652번 N과 M(4) (Java) (0) 2022.08.28 [Baekjoon] 15650번 N과 M(2) (Java) (0) 2022.08.28 [Baekjoon] 2407번 조합(Java) (0) 2022.08.27