[Programmers] Level 3. 정수 삼각형 (Python)

2022. 10. 2. 12:36·코딩테스트/Python
728x90
반응형

🔗 Problem Link

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


❔Thinking

  • 삼각형 상단에서 바닥까지 차례대로 내려오면서, 각 숫자를 더해나간다.
  • 대각선 왼쪽과 오른쪽으로만 내려올 수 있다.
  • 가장 큰 수를 만들 수 있는 경로로 내려왔을 때, 그 합을 반환한다.

💻Solution

1. 위에서 아래로 내려오면서 더해나가는 풀이

def solution(triangle):
    if len(triangle) == 1:
        return (triangle[0])
    while len(triangle) > 1:
        sum_result = []
        max_result = []
        # 상단 두줄 꺼내기
        up, down = triangle.pop(0), triangle.pop(0)
        # 더하기
        for i in range(len(up)):
            sum_result += [up[i]+down[i], up[i]+down[i+1]]
        # 두 개씩 max()하기
        for i in range(1, len(sum_result)-1, 2):
            max_result.append(max(sum_result[i], sum_result[i+1]))
        # 삼각형에 합치기
        max_result = [sum_result[0]] + max_result + [sum_result[-1]]
        triangle = [max_result] + triangle
    return max(*triangle)

 

2. 아래서 위로 올라가면서 더해나가는 풀이 (출처 - 프로그래머스 다른 사람의 풀이)

def solution(triangle):
    height = len(triangle)
    while height > 1:
        for i in range(height - 1):
            triangle[height-2][i] += max([triangle[height-1][i], triangle[height-1][i+1]])
        height -= 1
    answer = triangle[0][0]
    return answer

🗝️keypoint

  1. 위에서 아래로 더해가는 풀이의 경우, 양 끝을 제외하고 두자리씩 max()를 하여 새로운 층을 만들어야 한다.
  2. 모든 경로를 탐색하여 최대값을 찾는 경우, 삼각형의 높이가 높아지면 시간이 많이 걸린다.
저작자표시 (새창열림)

'코딩테스트 > Python' 카테고리의 다른 글

[Programmers] Level 3. 단속 카메라  (0) 2022.10.08
[Programmers] Level 3. 최고의 집합 (Python)  (0) 2022.10.04
[Programmers] Level 2. 큰 수 만들기 (Python)  (0) 2022.10.01
[Programmers] Level 2. 전화번호 목록 (Python)  (0) 2022.09.30
[Programmers] Level 2. 삼각 달팽이 (Python)  (0) 2022.09.30
'코딩테스트/Python' 카테고리의 다른 글
  • [Programmers] Level 3. 단속 카메라
  • [Programmers] Level 3. 최고의 집합 (Python)
  • [Programmers] Level 2. 큰 수 만들기 (Python)
  • [Programmers] Level 2. 전화번호 목록 (Python)
swwho
swwho
일상을 데이터화하다
  • swwho
    하루한장
    swwho
  • 전체
    오늘
    어제
    • 분류 전체보기 (188)
      • ML_DL (39)
        • MUJAKJUNG (무작정 시리즈) (18)
        • 딥러닝 공부하기 (21)
      • 데이터사이언스 (1)
        • EDA (1)
        • 데이터과학을 위한 통계 (0)
      • 데이터엔지니어링 (2)
      • 논문리뷰 (2)
        • Computer Vision (2)
      • Python 활용하기 (12)
      • 코딩테스트 (127)
        • Python (109)
        • MySQL (14)
      • Git (3)
      • MySQL 활용하기 (0)
      • 일상 이야기 (1)
  • 블로그 메뉴

    • 홈
    • 태그
  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.3
swwho
[Programmers] Level 3. 정수 삼각형 (Python)
상단으로

티스토리툴바