[백준] 1932 C++

1569 단어 baekjoonbaekjoon

#include <iostream>
#include <algorithm>
using namespace std;

// 정수 삼각형

int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  int T, num;             // 테스트 케이스, 삼각형 속 수
  int M=0;                // 최댓값
  int arr[501][501];
  // int sum[501][501];

  cin >> T;
  // 피라미드 모양으로 숫자를 배열에 집어넣음
  for(int i=1; i<=T; i++) {
    for(int j=1; j<=i; j++) {
      cin >> num;
      arr[i][j] = num;
    }
  }

  // 둘째줄 첫번째 원소부터
  for(int i=2; i<=T; i++) {
    for(int j=1; j<=i; j++) {
      // 가장 첫, 끝 원소가 아닐 시,
      if(1<j<i) {
        // 윗줄 왼/오 대각선 두 개의 숫자 중 큰 수를 현 원소에 더함
        arr[i][j] += max(arr[i-1][j-1], arr[i-1][j]);
      }
      // 그 줄의 첫번째 또는 마지막 원소라면 바로 위에 있는 수를 현 원소에 더함
      else if(j == 1) arr[i][1] += arr[i-1][1];
      else if(j == i) arr[i][j] += arr[i-1][j-1];
    }
  }

  // 제대로 더해졌는지 확인
  // for(int i=1; i<=T; i++) {
  //   for(int j=1; j<=i; j++) {
  //     cout << arr[i][j] << " ";
  //   } cout << '\n';
  // }

  // 가장 마지막 줄 원소 중 최댓값을 찾음
  M = arr[T][1];
  for(int i=2; i<=T; i++) {
    M = max(M, arr[T][i]);
  }

  cout << M << '\n';

  return 0;
}

좋은 웹페이지 즐겨찾기