O(NlogN)

🎒 공부/알고리즘

LIS

LIS LIS; Longest Increasing Subsequence 최장 증가 부분 수열 original array의 일부 원소를 골라내서 만든 부분 수열 중, 각 원소가 이전 원소보다 크다는 조건을 만족하고, 그 길이가 최대인 부분 수열 LIS 길이 구하기 1. DP - O(N^2) length를 아래와 같이 정의할 때, DP를 활용하여 LIS의 길이를 구할 수 있다. length[i]: i번째 인덱스에서 끝나는 최장 증가 부분 수열의 길이 이때 length.size == array.size 이다. for (i in array.indices) { length[i] = 1 for (j in 0 until i) { if (array[j] < array[i]) length[i] = max(length[i..

🎒 공부/👊 알고리즘 문제 Kotlin 풀이

백준 꼬인 전깃줄 - boj1365

1365번: 꼬인 전깃줄 첫 줄에 전봇대의 개수 N(1 ≤ N ≤ 100,000)이 주어지고, 이어서 N보다 작거나 같은 자연수가 N개 주어진다. i번째 줄에 입력되는 자연수는 길 왼쪽에 i번째 전봇대와 연결된 길 오른편의 전봇대가 www.acmicpc.net 안녕하세요. 백준의 꼬인 전깃줄 문제입니다. 최장 증가 수열의 길이를 우아하게 돌려돌려 물어보는 문제에요. 이 문제를 풀 때만 해도 LIS의 길이 구하는 방법은 DP, 즉 O(N^2)인 방법만 알고 있었어서 10만...이라는 입력값을 보고 뭔가 이상하다고 생각했습니다. 곱셈이 헷갈려서 계산기로 10만*10만을 해 봤습니다. 그리고 못 푸는 문제다 싶어 호다닥 구글링으로 정답 풀이를 참고해서 풀었습니다. 근데 알고리즘을 알고 나니 제법 쉬운 문제였어..

dev_sia
'O(NlogN)' 태그의 글 목록