프로그래머스 Lv.3 정수삼각형

2024. 11. 11. 20:25·코딩 알고리즘 스터디

 

- 문제 설명

 

위와 같은 삼각형의 꼭대기에서 바닥까지 이어지는 경로 중, 거쳐간 숫자의 합이 가장 큰 경우를 찾아보려고 합니다. 아래 칸으로 이동할 때는 대각선 방향으로 한 칸 오른쪽 또는 왼쪽으로만 이동 가능합니다. 예를 들어 3에서는 그 아래칸의 8 또는 1로만 이동이 가능합니다.
삼각형의 정보가 담긴 배열 triangle이 매개변수로 주어질 때, 거쳐간 숫자의 최댓값을 return 하도록 solution 함수를 완성하세요.

- 제한사항

  • 삼각형의 높이는 1 이상 500 이하입니다.
  • 삼각형을 이루고 있는 숫자는 0 이상 9,999 이하의 정수입니다.

 

- 입출력 예

triangle  result
[[7], [3, 8], [8, 1, 0], [2, 7, 4, 4], [4, 5, 2, 6, 5]]  30

 

 

 

- 문제 풀이

 

동적 계획법(Dynamic Programming, DP)**은 최적화 문제를 해결하는 데 사용되는 알고리즘 기법으로, 문제를 더 작은 하위 문제로 나누어 해결하고 그 하위 문제들의 답을 저장하여 중복 계산을 피하는 방법입니다.

 

처음엔 dpf인줄 알고 삽질하고 있다가 풀 수 있게 되었습니다. 

가장 아래에서 바로 위쪽줄부터 시작하고

왼쪽숫자와 바로 아래, 오른쪽 숫자중에 큰값을 더하여 임의의 dp배열에 넣어 합을 구하는 방식입니다.

class Solution {
    public int solution(int[][] triangle) {
        int n = triangle.length;
        int[][] dp = new int[n][n];
        for (int i = 0; i < n; i++) {
            dp[n-1][i] = triangle[n-1][i];
        }
        
        // 맨 아래에서 바로 위쪽 줄
        for (int i = n - 2; i >= 0; i--) {
            // 가장 왼쪽부터 오른쪽으로 시작
            for (int j = 0; j <= i; j++) {
                 // 바로 아래, 오른쪽 중에 큰 값 더해서 dp에 업로드
                dp[i][j] = triangle[i][j] + Math.max(dp[i + 1][j], dp[i + 1][j + 1]);
            }
        }   
        return dp[0][0];
    }
}

 

'코딩 알고리즘 스터디' 카테고리의 다른 글

코딩마스터스 (고급) 작곡 프로그램  (1) 2024.12.03
코딩마스터스 (중급) 곰팡이  (1) 2024.11.19
프로그래머스 Lv.2 롤케이크 자르기  (1) 2024.11.11
프로그래머스 Lv.3 보석 쇼핑  (3) 2024.10.28
프로그래머스 Lv2. 이모티콘 할인행사  (2) 2024.10.21
'코딩 알고리즘 스터디' 카테고리의 다른 글
  • 코딩마스터스 (고급) 작곡 프로그램
  • 코딩마스터스 (중급) 곰팡이
  • 프로그래머스 Lv.2 롤케이크 자르기
  • 프로그래머스 Lv.3 보석 쇼핑
Rabet
Rabet
  • 블로그 메뉴

    • 관리자
    • 글쓰기
  • Rabet
    卯
    Rabet
  • 전체
    오늘
    어제
    • Root (139)
      • KT AIVLE School (85)
        • Start (4)
        • Python프로그래밍 & 라이브러리 (6)
        • 데이터 처리 및 분석 (7)
        • 데이터 분석 및 의미 찾기 (7)
        • 웹크롤링 (10)
        • 머신러닝 (10)
        • 딥러닝 (6)
        • 시각지능 딥러닝 (10)
        • 언어지능 딥러닝 (6)
        • JAVA (4)
        • SQL (2)
        • 가상화 클라우드 (5)
        • 프로젝트 (8)
      • QA (2)
        • 오류사항 (1)
      • 웹공부 (14)
        • SPRING (11)
        • React (1)
      • 코딩 알고리즘 스터디 (23)
      • 코딩테스트 (9)
        • JAVA (8)
        • HTML (1)
      • CS공부 (3)
      • 자격증공부 (3)
        • 정보처리기사 (1)
        • 컴퓨터활용능력 1급 (1)
        • AICE Associate (1)
        • CSTS (0)
  • 인기 글

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
Rabet
프로그래머스 Lv.3 정수삼각형
상단으로

티스토리툴바