https://softeer.ai/practice/6293
Softeer - 현대자동차그룹 SW인재확보플랫폼
softeer.ai
안녕하세요.
HSAT 를 준비하면서 이번에는 Level 3 문제를 한번 풀어보았습니다.
문제
남북으로 흐르는 개울에 동서로 징검다리가 놓여져 있다.
이 징검다리의 돌은 들쑥날쑥하여 높이가 모두 다르다. 철수는 개울의 서쪽에서 동쪽으로 높이가 점점 높은 돌을 밟으면서 개울을 지나가려고 한다.
돌의 높이가 서쪽의 돌부터 동쪽방향으로 주어졌을 때 철수가 밟을 수 있는 돌의 최대 개수는?
제약조건
1 ≤ N ≤ 3×103 인 정수
1 ≤ Ai ≤ 108 인 정수
입력형식
첫 번째 줄에 돌의 개수 N이 주어진다.
두 번째 줄에 돌의 높이 Ai (1 ≤ i ≤ N)가 서쪽부터 동쪽으로 차례로 주어진다.
출력형식
첫 번째 줄에 철수가 밟을 수 있는 돌의 최대 개수를 출력하라.
입력예제1
5 3 2 1 4 5
출력예제1
3
풀이
dolmange 배열에 돌의 높이를 넣어준 후,
Dynamic Programming 기법을 사용하여 dp 배열에 밟을 수 있는 돌의 최대 개수를 넣어줬습니다.
이전 돌의 높이들을 비교하는데 max 값을 활용하여 비교했습니다.
import sys
N = int(input())
dolmange = list(map(int, input().split()))
dp = [1] * N
for i in range(1, N):
max_before = 0
for j in range(0, i):
if dolmange[i] > dolmange[j]:
max_before = max(max_before, dp[j])
dp[i] = max_before + 1
print(max(dp))
'코딩테스트' 카테고리의 다른 글
[Softeer 연습문제] 성적 평균 (0) | 2024.04.08 |
---|---|
[JAVA]자바 코딩테스트 시 자주 쓰이는 기본 문법 ! (0) | 2024.03.31 |
[백준] 15649번 N과 M(5) (0) | 2024.03.24 |
[프로그래머스-LV2] 멀리 뛰기 (1) | 2024.03.18 |
[백준] 1756번 암호만들기 (1) | 2024.03.17 |