[프로그래머스] 정수삼각형 - 파이썬(Python)

2021. 4. 25. 17:47· 알고리즘/문제풀이
목차
  1. 문제 설명
  2. 입출력 예
  3. 나의 풀이 
  4. 접근법 및 코드 설명
728x90

문제 설명

위와 같은 삼각형의 꼭대기에서 바닥까지 이어지는 경로 중, 거쳐간 숫자의 합이 가장 큰 경우를 찾아보려고 합니다. 아래 칸으로 이동할 때는 대각선 방향으로 한 칸 오른쪽 또는 왼쪽으로만 이동 가능합니다. 예를 들어 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

나의 풀이 

def solution(triangle):
    for i in range(1, len(triangle)):
        for j in range(i+1):
            if j == 0:
                triangle[i][j] += triangle[i-1][j]
            elif j == i:
                triangle[i][j] += triangle[i-1][j-1]
            else:
                triangle[i][j] += max(triangle[i-1][j], triangle[i-1][j-1])
                
            
    return max(triangle[-1])

접근법 및 코드 설명

삼각형의 맨 위부터 한 높이씩 내려오며 각 원소 값에 올 수 있는 최댓값을 계속해서 업데이트 해주는 방식으로 문제를 해결할 수 있다.

 

최댓값을 업데이트 하는 과정을 세 가지로 나눌 수 있는데, 우선 어느 층이든 맨 왼쪽, 맨 오른쪽 값, 즉 인덱스가 0이거나 h(높이)인 경우는 다른 수와 비교할 것 없이 바로 직전 층의 인덱스가 0인 값과 h(높이)인 값을 넣어주면 된다. (층은 편의상 거꾸로 세준다.)

 

즉, 3번째 층의 0번 인덱스의 값은 2번째 층의 0번 인덱스의 값이 들어와야하며, 3번째 층의 3번째 값(2번 인덱스 값)은 2번째 층의 1번째 값(1번 인덱스)이 와야한다.

 

따라서, 해당 경우를 각각 j == 0 일 때와 j == i 일 때로 나누어 예외처리를 해준 후, 나머지 값들에 대해선 해당 위치에 들어올 수 있는 두 개의 값을 비교한 후, 더 큰 값을 삽입하는 방식으로 처리해준다.

 

이후, 마지막 층(맨 아래 층)에 있는 값들 중 가장 큰 값을 리턴해주면 정답을 구할 수 있다.

저작자표시 (새창열림)

'알고리즘 > 문제풀이' 카테고리의 다른 글

[백준] 13305번 주유소 - 파이썬(Python)  (0) 2021.07.28
[백준] 1003번 피보나치 함수 - 파이썬(Python)  (0) 2021.04.26
[프로그래머스] 크레인 인형뽑기 게임 - 파이썬(Python)  (0) 2021.04.22
[백준] 10026번 적록색약 - 파이썬(Python)  (0) 2021.04.21
[백준] 11724번 연결 요소의 개수 - 파이썬(Python)  (0) 2021.04.20
  1. 문제 설명
  2. 입출력 예
  3. 나의 풀이 
  4. 접근법 및 코드 설명
'알고리즘/문제풀이' 카테고리의 다른 글
  • [백준] 13305번 주유소 - 파이썬(Python)
  • [백준] 1003번 피보나치 함수 - 파이썬(Python)
  • [프로그래머스] 크레인 인형뽑기 게임 - 파이썬(Python)
  • [백준] 10026번 적록색약 - 파이썬(Python)
SeongOnion
SeongOnion
서버는 꺼지지 않아요
조무래기 코딩서버는 꺼지지 않아요
SeongOnion
조무래기 코딩
SeongOnion
전체
오늘
어제
  • 분류 전체보기 (167)
    • 알고리즘 (81)
      • 이론 (8)
      • 문제풀이 (73)
    • 언어 (15)
      • Python (9)
      • JavaScript (1)
      • JAVA (5)
    • 데이터베이스 (5)
    • 프레임워크 (15)
      • Django (7)
      • Spring (8)
    • 그 외 공부 (38)
      • 운영체제 (1)
      • 자료구조 (14)
      • 네트워크 (5)
      • CS (2)
      • 기타 (7)
      • 트러블 슈팅 (9)
    • 프로젝트 (0)
    • 개발자취 (8)
    • 회고 (3)
    • 주저리주저리 (1)
    • 기타 (비개발) (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • BFS
  • 이진탐색
  • 회고
  • 프로그래머스
  • 에라토스테네스의 체
  • DRF
  • 백준
  • 개발자
  • Django
  • 소수
  • 큐
  • 컨트리뷰트
  • 장고
  • BFS/DFS
  • 코딩
  • 투 포인터 알고리즘
  • 자바
  • 브루트포스
  • 알고리즘
  • 코딩테스트
  • DP
  • 정렬 알고리즘
  • 그리디알고리즘
  • 스택
  • 오픈소스
  • 웹
  • 데이터베이스
  • 트러블 슈팅
  • 파이썬
  • spring

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
SeongOnion
[프로그래머스] 정수삼각형 - 파이썬(Python)
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.