[Python] 12738 - 가장 긴 증가하는 부분 수열 3 (골드2)

2022. 6. 28. 20:41·Coding Test/Solution

1. 문제 설명

https://www.acmicpc.net/problem/12738

 

12738번: 가장 긴 증가하는 부분 수열 3

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

www.acmicpc.net

 

[참고]

[Python] 11053 - 가장 긴 증가하는 부분 수열 (실버2)

[Python] 12015 - 가장 긴 증가하는 부분 수열 2 (골드2)

 


2. 아이디어

가장 긴 증가하는 부분 수열 2를 풀었다면 똑같은 로직으로 풀 수 있다.

한 가지 주의할 점은 처음에 0을 넣었던 지난 문제와 이번엔 음수가 포함되기 때문에

입력받은 값의 첫 번째 값을 lis 배열에 넣어버리고 2번 인덱스부터 탐색을 시켜야 정상적으로 굴러간다.

 


3. 코드

import sys

input = sys.stdin.readline

def solution():
    n = int(input())
    a = list(map(int, input().split()))
    lis = []
    lis.append(a[0])

    for current in a[1:]: # O(n)
        if lis[-1] < current:
            lis.append(current)
        else: # lis 값 갱신
            left = 0
            right = len(lis)

            while left < right: # O(log n) : 분할 탐색
                mid = (left + right) // 2

                if lis[mid] < current:
                    left = mid + 1
                else:
                    right = mid
            lis[right] = current
    print(len(lis))


solution()
저작자표시 비영리
'Coding Test/Solution' 카테고리의 다른 글
  • [Python] 14003 - 가장 긴 증가하는 부분 수열 5 (플래티넘5)
  • [Python] 14002 - 가장 긴 증가하는 부분 수열 4 (골드4)
  • [Python] 12015 - 가장 긴 증가하는 부분 수열 2 (골드2)
  • [Python] 11053 - 가장 긴 증가하는 부분 수열 (실버2)
나죽못고나강뿐
나죽못고나강뿐
싱클레어, 대부분의 사람들이 가는 길은 쉽고, 우리가 가는 길은 어려워요. 우리 함께 이 길을 가봅시다.
  • 나죽못고나강뿐
    코드를 찢다
    나죽못고나강뿐
  • 전체
    오늘
    어제
    • 분류 전체보기 (448)
      • Computer Science (59)
        • Git & Github (4)
        • Network (17)
        • Computer Structure & OS (13)
        • Software Engineering (5)
        • Database (9)
        • Security (4)
        • Concept (7)
      • Frontend (21)
        • React (13)
        • Android (4)
        • iOS (4)
      • Backend (74)
        • Spring Boot & JPA (47)
        • Django REST Framework (14)
        • MySQL (8)
        • Nginx (1)
        • FastAPI (4)
      • DevOps (24)
        • Docker & Kubernetes (11)
        • Naver Cloud Platform (1)
        • AWS (2)
        • Linux (6)
        • Jenkins (0)
        • GoCD (3)
      • Coding Test (112)
        • Solution (104)
        • Algorithm (7)
        • Data structure (0)
      • Reference (134)
        • Effective-Java (90)
        • Pragmatic Programmer (0)
        • CleanCode (11)
        • Clean Architecture (2)
        • Test-Driven Development (4)
        • Relational Data Modeling No.. (0)
        • Microservice Architecture (2)
        • 알고리즘 문제 해결 전략 (9)
        • Modern Java in Action (0)
        • Spring in Action (0)
        • DDD start (0)
        • Design Pattern (6)
        • 대규모 시스템 설계 (6)
        • JVM 밑바닥까지 파헤치기 (4)
      • Service Planning (2)
      • Side Project (5)
      • AI (0)
      • MATLAB & Math Concept & Pro.. (1)
      • Review (13)
      • Interview (1)
      • IT News (2)
  • 블로그 메뉴

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

    • 깃
  • 공지사항

    • 취업 전 계획 재조정
    • 취업 전까지 공부 계획
    • 앞으로의 일정에 대하여..
    • 22년 동계 방학 기간 포스팅 일정
    • 중간고사 기간 이후 포스팅 계획 (10.27~)
  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
나죽못고나강뿐
[Python] 12738 - 가장 긴 증가하는 부분 수열 3 (골드2)

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.