Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- OOP
- Kubernetes
- html
- bean
- 탐욕법
- JWT
- 코딩테스트
- java
- Linux
- typescript
- javascript
- REST API
- 자료구조
- Spring
- MySQL
- 프로그래머스
- Interceptor
- puppeteer
- TIL
- 알고리즘
- nestjs
- Deep Dive
- GraphQL
- 인접행렬
- dfs
- css
- 인접리스트
- node.js
- LifeCycle
- winston
Archives
- Today
- Total
처음부터 차근차근
[프로그래머스] 정수 삼각형 본문
728x90
문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/43105
문제 설명
위와 같은 삼각형의 꼭대기에서 바닥까지 이어지는 경로 중, 거쳐간 숫자의 합이 가장 큰 경우를 찾아보려고 합니다. 아래 칸으로 이동할 때는 대각선 방향으로 한 칸 오른쪽 또는 왼쪽으로만 이동 가능합니다. 예를 들어 3에서는 그 아래칸의 8 또는 1로만 이동이 가능합니다.
삼각형의 정보가 담긴 배열 triangle이 매개변수로 주어질 때, 거쳐간 숫자의 최댓값을 return 하도록 solution 함수를 완성하세요.
제한사항
- 삼각형의 높이는 1 이상 500 이하입니다.
- 삼각형을 이루고 있는 숫자는 0 이상 9,999 이하의 정수입니다.
내 풀이
function solution(triangle) {
// Bottom-up으로 구현
for (let i = triangle.length - 1; i > 0; i--) {
triangle[i-1].map((value, index) => {
// 왼쪽과 오른쪽 값 중에 큰 값을 parent에 추가한다. 이때 삼한 연산자를 사용
triangle[i-1][index] = triangle[i][index] >= triangle[i][index + 1] ? (value + triangle[i][index]) : (value+ triangle[i][index + 1]);
})
}
return triangle[0][0]
}
간단하게 기능을 구현하였다.
[2, 7, 4, 4]와 [4, 5, 2, 6, 5]를 예시로 들어본다면
Parents : [2, 7, 4, 4]
Children : [4, 5, 2, 6, 5]
먼저 2는 4와 5 중에 큰 숫자를 비교하여 더한 값을 저장한다. 5가 더 크기 때문에 7을 저장
마찬가지로 7은 5와 2 중에서 큰 숫자를 비교 -> 5가 크므로 12를 저장
이렇게 한다면
변한 Parent를 구해보자면
Change Parent : [7, 12, 10, 11] 이 된다.
이를 계속해서 위로 올라가면, 가장 큰 수를 구할 수 있게 된다.
다른 사람의 풀이
function solution(triangle) {
return Math.max(...triangle.reduce((cost, line) => {
return line.map((v, index) => {
return v + Math.max((index < cost.length ? cost[index] : 0), (index > 0 ? cost[index-1] : 0));
});
}, []));
}
비슷한 풀이법도 존재하는데, 이 분은 Top -> Down 형태로 내려가면서, 기능을 구현하였다.
오늘 배운 점
DP 문제였지만, DP같지 않은 문제였다.
Top down, Bottom up 형태 둘 다 있지만, 내가 풀기 쉬운 방식으로 접근하고, 이후에 개선하는 것도 좋다고 생각한다.
'코딩테스트 > Javascript' 카테고리의 다른 글
[프로그래머스] 피보나치 수 (0) | 2024.01.09 |
---|---|
[프로그래머스] 외계어 사전 (0) | 2024.01.09 |
[프로그래머스] 프로세스 (1) | 2024.01.05 |
[프로그래머스] 큰 수 만들기 (0) | 2024.01.04 |
[프로그래머스] 조이스틱 (1) | 2024.01.04 |