티스토리 뷰
1.문제
위와 같은 삼각형의 꼭대기에서 바닥까지 이어지는 경로 중, 거쳐간 숫자의 합이 가장 큰 경우를 찾아보려고 합니다. 아래 칸으로 이동할 때는 대각선 방향으로 한 칸 오른쪽 또는 왼쪽으로만 이동 가능합니다. 예를 들어 3에서는 그 아래칸의 8 또는 1로만 이동이 가능합니다.
삼각형의 정보가 담긴 배열 triangle이 매개변수로 주어질 때, 거쳐간 숫자의 최댓값을 return 하도록 solution 함수를 완성하세요.
2.제한사항
- 삼각형의 높이는 1 이상 500 이하입니다.
- 삼각형을 이루고 있는 숫자는 0 이상 9,999 이하의 정수입니다.
3.입출력 예
4.나의 풀이
function solution (arr) {
var answer = 0;
let leftParent = 0;
let rightParent = 0;
arr.forEach((inArr, rowIndex) => {
if(rowIndex == 0) return;
inArr.forEach((v, columnIndex) => {
// 가장 좌측 노드 합산
if(columnIndex == 0){
arr[rowIndex][columnIndex] += arr[rowIndex-1][columnIndex];
// 가장 우측 노드 합산
} else if ( rowIndex == columnIndex ) {
arr[rowIndex][columnIndex] += arr[rowIndex-1][columnIndex-1];
// 부모 노드 중 값이 큰 부모를 합산
} else {
leftParent = arr[rowIndex-1][columnIndex-1];
rightParent = arr[rowIndex-1][columnIndex];
arr[rowIndex][columnIndex] += ( leftParent > rightParent ) ? leftParent : rightParent;
}
});
});
// 가장 마지막 배열의 최대값을 구함
answer = Math.max(...arr[arr.length-1]);
return answer;
}
'컴퓨터 공학 > 알고리즘' 카테고리의 다른 글
[프로그래머스][동적계획법]타일 장식물 (0) | 2019.09.04 |
---|---|
[프로그래머스][이분탐색]예산 (0) | 2019.08.27 |
순환 (Recursion) (0) | 2019.08.19 |
[프로그래머스][Lv1]행렬의 덧셈 (0) | 2019.08.11 |
[프로그래머스][Lv1]최대공약수와 최소공배수 (0) | 2019.08.11 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- JPA
- Kubernetes
- 프로그래머스[힙]
- 프로그래머스[Lv1]
- 동적계획법
- typescript
- Pipeline
- execution context
- 프로그래머스[해시]
- Docker
- Handshake
- Apollo
- react
- CD
- CRP 최적화
- 프로그래머스
- Jenkins
- 실행 문맥
- javascript
- Spring Boot
- 웹 사이트 최적화
- graphql
- 프로그래머스[이분탐색]
- Web
- CI
- 프로그래머스[정렬]
- 알고리즘
- PostgreSQL
- Nashorn
- 프로그래머스[스택/큐]
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함