[백준]11054번 가장 긴 바이토닉 부분수열 - python파이썬

2025. 1. 15. 16:32·코딩테스트/백준

문제

 

 

 

이 문제를 보고 처음 생각이 든 알고리즘은 LIS이다.

그러나 문제는 최장 증가 부분수열이 아니라 바이토닉수열로 어떤 수를 기준으로 오른쪽 부분은 감소하는 부분수열도 찾아주어야한다.

 

 

그래서 생각한 방법은 최장증가 부분수열을 구하고 최장감소 부분수열을 구해서 이 둘의 합이 최대가 되는 지점을 찾아주는 것이다.

 

 

 

정답코드

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

ans = 0
dp1 = [0] * n
dp2 = [0] * n

#최장 증가 부분수열
for i in range(n):
    dp1[i] = 1
    for j in range(i):
        if a[i] > a[j]:
            dp1[i] = max(dp1[i],dp1[j]+1)
#최장 감소 부분수열
for i in range(n-1,-1,-1):
    dp2[i] = 1
    for j in range(n-1,i,-1):
        if a[i] > a[j]:
            dp2[i] = max(dp2[i],dp2[j]+1)

for i in range(n):
    #기준점이 되는 부분의 길이가 두번 더해졌으므로 -1을 한번 해줌
    ans = max(ans,dp1[i]+dp2[i]-1)
print(ans)
# print(dp1)
# print(dp2)

 

 

이때 dp1[i]=1 과 같이 시작점 부분부터 길이를 측정하므로 1부터 길이를 계산했는데 둘이 합쳐서 ans를 구할 때 이 부분이 두번 계산됐으므로 -1을 해주었다.

 

 

골드4 레벨 문제를 풀면서 느끼는 점은 기존에 풀었던 문제와 푸는 방식이 유사한데 이를 어떻게 응용해서 문제에 적용할 지 생각해내는 것이 가장 중요한 것 같다.

'코딩테스트 > 백준' 카테고리의 다른 글

[백준] 2110번 공유기 설치 - python 파이썬 (이분탐색)  (4) 2025.01.22
[백준]1806번 부분합 - python 파이썬  (0) 2025.01.21
[백준]14502번 연구소 BFS - python  (1) 2025.01.06
[백준] 2212번 센서 - python파이썬  (0) 2024.12.18
[백준] 5557번 1학년 - python 파이썬  (0) 2024.12.17
'코딩테스트/백준' 카테고리의 다른 글
  • [백준] 2110번 공유기 설치 - python 파이썬 (이분탐색)
  • [백준]1806번 부분합 - python 파이썬
  • [백준]14502번 연구소 BFS - python
  • [백준] 2212번 센서 - python파이썬
hiwon
hiwon
천천히 굴러가는 코딩일기
  • hiwon
    하이원의 코딩 일기
    hiwon
  • 전체
    오늘
    어제
    • 분류 전체보기 (83)
      • 프론트엔드 (0)
        • react (0)
      • 백엔드 (13)
        • node.js (1)
        • spring (6)
      • 코딩테스트 (57)
        • 백준 (41)
        • 프로그래머스 (15)
      • 프로디지털아카데미 (9)
        • 클라우드 (1)
        • JavaScript (1)
      • github (1)
      • AWS (2)
      • Infra (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    spring
    파이썬
    프로그래머스
    투포인터
    백준
    알파코
    백엔드
    kdt교육
    MSA
    알고리즘
    Java
    프디아
    코테
    알파코캠퍼스
    K디지털트레이닝
    프로디지털아카데미
    신한투자증권
    bastion host
    BFS
    그리디
    AWS
    UnionFind
    코딩테스트
    IT기획
    EC2
    백트래킹
    github
    python
    깃허브
    다익스트라
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
hiwon
[백준]11054번 가장 긴 바이토닉 부분수열 - python파이썬
상단으로

티스토리툴바