사용자 도구

사이트 도구


ps:problems:boj:12354

Ocean View (Small)

ps
링크acmicpc.net/…
출처BOJ
문제 번호12354
문제명Ocean View (Small)
레벨실버 5
분류

LIS

시간복잡도O(T*nlogn)
인풋사이즈T<=100, n<=50
사용한 언어Python 3.13
제출기록35500KB / 40ms
최고기록32ms
해결날짜2026/02/08

풀이

  • 남은 집들이 오름차순으로 정렬된 상태가 되면, 모든 집들이 오션뷰를 볼수 있다.
  • 오름차순으로 정렬된 가장 많은 집의 개수는, 가장 긴 증가하는 부분 수열 (LIS; Longest Increasing Subsequence)의 길이를 구하면 된다. 부숴야 하는 집의 개수는, 전체 개수에서 남길 집의 개수를 빼주면 된다.
  • LIS를 구하는 시간복잡도는 O(nlogn)

코드

"""Solution code for "BOJ 12354. Ocean View (Small)".

- Problem link: https://www.acmicpc.net/problem/12354
- Solution link: http://www.teferi.net/ps/problems/boj/12354

Tags: [lis]
"""

import sys
from teflib import psutils
from teflib import seqtask


@psutils.gcj_style
def main():
    N = int(sys.stdin.readline())
    h = [int(x) for x in sys.stdin.readline().split()]
    print(N - seqtask.longest_inc_subseq_length(h, strict=True))


if __name__ == '__main__':
    main()

토론

댓글을 입력하세요:
Y I W Q G
 
ps/problems/boj/12354.txt · 마지막으로 수정됨: 2026/02/08 14:02 저자 teferi