티스토리 뷰
728x90
문제
땅따먹기 점수판 array가 주어짐
방향을 열 방향으로 한칸씩 내려가며 점수를 획득하여 점수 최댓값을 구하는 문제인데
같은 열 방향을 연속으로 밟을 수 없는 규칙이 있음
.+ 열의 갯수는 4개
예를 들면,
| 1 | 2 | 3 | 5 |
| 5 | 6 | 7 | 8 |
| 4 | 3 | 2 | 1 |
제한사항
- 행의 개수 N : 100,000 이하의 자연수
- 열의 개수는 4개이고, 땅(land)은 2차원 배열로 주어집니다.
- 점수 : 100 이하의 자연수
입출력 예
land | answer |
---|---|
[[1,2,3,5],[5,6,7,8],[4,3,2,1]] | 16 |
풀이
[시간초과] dfs로 풀어야 하지 않을까 란 생각을 했다. 범위가 크니깐..?
[성공] dp로 도전.. (2차원 배열을 만들어서)
dp[i] = dp[i-1]의 같은 열을 제외한 이전값들의 합 중 최댓값
n-1번째 계산된 값을 중복적으로 계산할 경우가 생기기 때문이
그럴 이유가 없으니깐 dp를 통해서 풀었어야 했음..
코드
처음 3중for문은 좀 아닌것 같아서
[1,2,3,4].map{$0}.filter{$0!=j}.forEach 문을 사용해서 풀었는데 시간초과가 떳다.
생각해보니 결국 j를 제외한 array을 만든다 해도 다시 for문을 돌려야 했기 때문에 O(n²)이 되기 때문에 for문으로 돌리는걸로 바꿧다 =_=
728x90
'개발 블로그 > 알고리즘' 카테고리의 다른 글
[Swift] 프로그래머스 - 최댓값과 최솟값 (0) | 2020.09.29 |
---|---|
[Swift] 프로그래머스 - 삼각 달팽이 (0) | 2020.09.28 |
[Swift] 프로그래머스 - 올바른 괄호 (0) | 2020.09.28 |
[Swift] 프로그래머스 - 다음 큰 숫자 (0) | 2020.09.28 |
[DP]1, 2, 3더하기4 (0) | 2020.07.14 |
댓글
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 카카오 블라인드 2018
- 프로그래머스 캐시
- Github Search
- UIModalPresentationStyle
- 1차 뉴스 클러스터링
- 아키택처
- 프로그래머스 추석트래픽
- RxDataSource
- 알고리즘
- Level 3
- ios
- Widget
- 괄호연산
- today extension
- 카카오블라인드2018
- RxSwift
- 자기PR
- Swift
- BaseTableViewController
- 카카오 블라인드2018
- 위젯
- BaseViewController
- TransitionStyle
- 백준 1946
- presentStyle
- 백준 신입사원
- ReactorKit
- 프로그래머스 오픈채팅방
- VIPER 패턴
- Stack
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함