ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [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
Designed by Tistory.