99클럽 코테 스터디 32일차 TIL + 가장 긴 바이토닉 부분 수열(백준 #11054)

2024. 11. 28. 17:50·99클럽 코테 스터디

❇️오늘의 학습 키워드 : 가장 긴 바이토닉 부분 수열(백준 #11054)

문제

수열 S가 어떤 수 Sk를 기준으로 S1 < S2 < ... Sk-1 < Sk > Sk+1 > ... SN-1 > SN을 만족한다면, 그 수열을 바이토닉 수열이라고 한다.

예를 들어, {10, 20, 30, 25, 20}과 {10, 20, 30, 40}, {50, 40, 25, 10} 은 바이토닉 수열이지만, {1, 2, 3, 2, 1, 2, 3, 2, 1}과 {10, 20, 30, 40, 20, 30} 은 바이토닉 수열이 아니다.

수열 A가 주어졌을 때, 그 수열의 부분 수열 중 바이토닉 수열이면서 가장 긴 수열의 길이를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 수열 A의 크기 N이 주어지고, 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ N ≤ 1,000, 1 ≤ Ai ≤ 1,000)

출력

첫째 줄에 수열 A의 부분 수열 중에서 가장 긴 바이토닉 수열의 길이를 출력한다.

예제 입력 1 

10
1 5 2 1 4 3 4 5 2 1

예제 출력 1 

7

정답 코드

n = int(input())
nums = list(map(int, input().split()))

# 증가 DP
asc_dp = [1] * n
for i in range(1, n):
    for j in range(i):
        if nums[j] < nums[i]:
            asc_dp[i] = max(asc_dp[i], asc_dp[j] + 1)

# 감소 DP
des_dp = [1] * n
for i in range(n - 2, -1, -1):
    for j in range(n - 1, i, -1):
        if nums[j] < nums[i]:
            des_dp[i] = max(des_dp[i], des_dp[j] + 1)

# 바이토닉 수열 길이 계산
ans = 0
for i in range(n):
    max_length = max(max_length, asc_dp[i] + des_dp[i] - 1)

print(ans)

❇️오늘의 회고

  - 두 dp  테이블로 나눠서 풀지 않고 한번에 풀려는 시도를 했다가 실패했다...

  - 오름차순 코드를 역순으로 바꾸기만 하면 그대로 재활용 가능하다! 다만 범위는 주의해야한다. (1부터,  n-2부터...그리고 i-1까지)

  - 이제 코테스터디도 막바지다. 코테스터디 덕분에 코딩테스트에 점점 자신감이 붙고 있다! 끝까지 열심히 하자.

  - 내일 11시, 문제를 풀기 전에 위 개념을 한번 더 복습하고 내일 문제에 사용된 알고리즘에 대해서 공부할 것이다!🙂

저작자표시 (새창열림)

'99클럽 코테 스터디' 카테고리의 다른 글

99클럽 코테 스터디 33일차 TIL + 회문(백준 #17609)  (0) 2024.11.29
99클럽 코테 스터디 31일차 TIL + 택배 배송(백준 #5792)  (0) 2024.11.27
99클럽 코테 스터디 30일차 TIL - 택배 배달과 수거하기(프로그래머스 #150369)  (0) 2024.11.26
99클럽 코테 스터디 29일차 TIL - 타임머신(백준 #11657)  (0) 2024.11.25
99클럽 코테 스터디 28일차 TIL - 이모티콘 할인행사(프로그래머스 #150368)  (1) 2024.11.24
'99클럽 코테 스터디' 카테고리의 다른 글
  • 99클럽 코테 스터디 33일차 TIL + 회문(백준 #17609)
  • 99클럽 코테 스터디 31일차 TIL + 택배 배송(백준 #5792)
  • 99클럽 코테 스터디 30일차 TIL - 택배 배달과 수거하기(프로그래머스 #150369)
  • 99클럽 코테 스터디 29일차 TIL - 타임머신(백준 #11657)
버그잡는고양이발
버그잡는고양이발
주니어 개발자입니다!
  • 버그잡는고양이발
    지극히평범한개발블로그
    버그잡는고양이발
  • 전체
    오늘
    어제
    • 분류 전체보기 (383) N
      • React (16)
      • Next.js (5)
      • Javascript (5)
      • Typescript (4)
      • Node.js (2)
      • Cs (16)
      • 트러블 슈팅&리팩토링 (6) N
      • Html (1)
      • Css (3)
      • Django (0)
      • vue (0)
      • Java (2)
      • Python (0)
      • 독서 (1)
      • 기타 (3)
      • 백준 (192)
      • swea (31)
      • 프로그래머스 (30)
      • 이코테 (4)
      • 99클럽 코테 스터디 (30)
      • ssafy (31)
      • IT기사 (1)
  • 블로그 메뉴

    • 홈
    • 태그
  • 인기 글

  • 태그

    항해99
    Til
    코딩테스트준비
    개발자취업
    99클럽
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
버그잡는고양이발
99클럽 코테 스터디 32일차 TIL + 가장 긴 바이토닉 부분 수열(백준 #11054)
상단으로

티스토리툴바