반응형
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- Spring
- 도커
- 운영체제
- programmers
- IT
- 리눅스
- 프로그래머스 #카카오 #IT #코딩테스트
- 스프링부트
- 캐시
- 엘라스틱서치
- 프로그래머스
- 카카오
- 백엔드
- 스프링
- Python
- springboot
- 코딩테스트
- Java
- 파이썬
- Elasticsearch
- C
- 네트워크
- 개발자
- Kakao
- DPDK
- Linux
- 쿠버네티스
- 알고리즘
- docker
- 자바
Archives
- Today
- Total
저고데
[프로그래머스]정수 삼각형 본문
728x90
반응형
문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/43105
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제를 간단히 요약하자면 다음과 같다.
정삼각형 형태의 피라미드에 숫자가 주어진다.
젤 위의 꼭지점에서 출발하여 바닥으로 이동한다고 할 때, 왼쪽 아래나 오른쪽 아래로만 움직일 수 있다.
이 때, 이동하면서 얻을 수 있는 숫자 합의 최댓값은 얼마인지 반환해야한다.
코드를 작성하기 위한 순서는 다음과 같다.
1. 이동할 수 있는 경우의 수가 두 가지 밖에 없으므로 더했을 때, 둘 중에 더 큰 값을 이동경로로 선택하여, 합한 값을 피라미드에 다시 대입한다.
2. 바닥까지 계속 반복하면 마지막 바닥의 열에는 최종 합이 있을 것이다.
3. 이중에서 최댓값을 반환한다.
def solution(triangle):
for i in range(1, len(triangle)):
for j in range(len(triangle[i])):
if j==0: #2번 : j가 0일 경우에는 움직일 수 있는 경우가 위에서 왼쪽 아래로 내려오는 경우 밖에 없다.
triangle[i][j]+=triangle[i-1][j] #따라서, 경우가 하나이기에 최댓값을 구할 필요가 없다.
elif j==i: #2번 : j와 i가 같은 경우에는 움직일 수 있는 경우가 위에서 오른쪽 아래로 내려오는 경우 밖에 없다.
triangle[i][j]+=triangle[i-1][j-1]
else: #2번 : 나머지로 움직일 수 있는 경우의 수가 두 가지인 경우이다.
triangle[i][j]+=max(triangle[i-1][j],triangle[i-1][j-1])
return max(triangle[-1])
처음에는 DFS 알고리즘을 사용하여, 꼭대기에서 바닥까지의 합을 구한 뒤, 최댓값을 구하는 방법을 사용하였다.
하지만, 문제 해결적인 측면에서는 해당 방법이 조금 더 매력적인 코드라고 생각하였다.
간결하고 보기 쉬운 코드를 작성하는 것은 좋은 개발자가 되기 위한 필수 요소라고 생각한다.
728x90
반응형
'프로그래머스' 카테고리의 다른 글
[프로그래머스]숫자의 표현 (0) | 2023.02.01 |
---|---|
[프로그래머스]크기가 작은 부분 문자열 (0) | 2023.02.01 |
[프로그래머스]문자열 압축 (0) | 2023.01.25 |
[프로그래머스]가장 긴 팰린드롬 (1) | 2023.01.25 |
[프로그래머스]성격 유형 검사하기 (0) | 2023.01.24 |