StackOverflow μμμ΄ μ§λ¬Έ μ νμ§λ§ μ¬κΈ°μ λ μ μ ν μ₯μκ° μλ€κ³ μκ°ν©λλ€.
μ΄κ²μ μκ³ λ¦¬μ¦ μκ° κ³Όμ μμ λ°μνλ λ¬Έμ μ λλ€ .
μμ μ μ κ° n μΈ λ°°μ΄ κ° μμ΅λλ€ (λ°°μ΄μ μ λ ¬νκ±°λ μμλ₯Ό κ³ μ νκ² ν νμλ μμ΅λλ€). μΆμ² O ( N ) λ‘ λλμ΄ μμμ κ°μ₯ ν° ν©μ μ°Ύλ μκ³ λ¦¬μ¦ Nμ .
an
O(n)
n
μ : . λ΅μ 56μ λλ€ (μμ 6 , 13 , 4 , 8 , 25 ν¬ν¨ )
a=[6,1,13,4,9,8,25],n=756
6,13,4,8,25
λμ νλ‘κ·Έλλ°μ μ¬μ©νκ³ λλ¨Έμ§ 0 , 1 , 2 , μ ν¨κ» κ°μ₯ ν° ν©κ³λ₯Ό μ μ₯νμ¬ μμ λΉκ΅μ μ½κ² μ°Ύμ μ μμ΅λλ€ . . . , n β 1 .
O(n2)0,1,2,...,nβ1
λν μ°μ λ μμ μνμ€μμ£Όμλ₯Ό μ ννλ©΄ λΆλΆ ν© λͺ¨λλ‘ n μ μ μ₯ νμ¬ μκ° μ μ΅μ μ μνμ€λ₯Ό μ½κ² μ°Ύμ μ μμ΅λλ€ . let S [ i ] = a [ 0 ] + a [ 1 ] + β― + a [ i ] , κ° λλ¨Έμ§ r μ λν΄ S [ j ] β‘ rμ΄ λλλ‘ κ°μ₯ ν° μΈλ±μ€ jλ₯Ό κΈ°μ΅νμμμ€
O(n)n
S[i]=a[0]+a[1]+β―+a[i]
r
j
, λ€μμ κ° I κ³ λ €ν΄μΌ S [ J ] β Sκ° [ I ] μ¬κΈ°μ, Jλ μ λμνλ μΈλ±μ€μ΄κ³ , R = S [ I ] κ°μ‘° N .
S[j]β‘r(modn)i
S[j]βS[i]
j
r=S[i]modn
κ·Έλ¬λ μΌλ°μ μΈ κ²½μ°μ μκ° μ루μ μ΄ μμ΅λκΉ? λͺ¨λ μ μμ λΆνλ립λλ€! λλ μ΄κ²μ΄ μ ν λμλ₯Ό λ€λ£¨λ κ²μΌλ‘ μκ°νμ§λ§ μ νν 무μμΈμ§ λͺ¨λ₯΄κ² μ΅λλ€.
O(n)λλ μκ° λ΄μμ΄ μμ μ μν ν μ μμ΅λκΉ?
O(nlogβ‘n)λ΅λ³
λ€μμ λͺ κ°μ§ μμμ μμ΄λμ΄μ λλ€.
-
λμ νλ‘κ·Έλλ° μκ³ λ¦¬μ¦μ λ€μ§μ΄ κ°μ₯ ν° ν©κ³ λμ κ°μ₯ μμ ν©κ³λ₯Ό μ°Ύμ μ μμ΅λλ€. λΉμ μ νλμ ν©λμ 0 λμ μ, μ 체 λ°°μ΄μ λλ¨Έμ§μ ν©ν ν©μ μ°Ύλλ€. μμλ₯Ό μ€λ¦μ°¨μμΌλ‘ μ²λ¦¬νλ©΄ μ 체 λ°°μ΄μ μ²λ¦¬νκΈ° μ μ λμ μκ³ λ¦¬μ¦μ΄ μ’ λ£ λ μ μμ΅λλ€.
k κ°μ μμλ₯Ό μ²λ¦¬νλ©΄ λΉμ©μ μ λλ€. μλ€ μλ€ μ νν Ξ© ( N λ‘κ·Έ N ) μ°λ¦¬λ λͺ¨λ μμλ₯Ό μ λ ¬ ν νμκ° μκΈ° λλ¬Έμμ΄ μκ³ λ¦¬μ¦μ. k κ°μ κ°μ₯ μμ μμ λ₯Ό μ»λ λ° O ( n log k ) μκ° λ§ κ±Έλ¦½λλ€ .
O(nk)k
Ξ©(nlogβ‘n)
O(nlogβ‘k)
k
-
κ°μ₯ ν° ν¬κΈ°μ μ§ν© λμ ν° ν¬κΈ°μ μ§ν©μ μΌλμλλ©΄ λΉ λ₯Έ νΈλ¦¬μ λ³ν κΈ°λ° λ€νμ κ³±μ μ μ¬μ©νμ¬ μκ°. λλ©μΈ λ²μκ° μ ν λ λ 3SUM μμ μν ν κ²κ³Ό μ μ¬ν©λλ€ . (μ°Έκ³ : μ¬μ©μ λ€λ₯Έ λΉμ μ΄ μ»μ κ²μ΄λ€, μ΄μ§ κ²μμ ν μ κ³± λ°λ³΅ O ( N K ( λ‘κ·Έ N ) ( λ‘κ·Έ λ‘κ·Έ N ) ) K
O(n(logβ‘n)2(logβ‘logβ‘n)) O(nk(logβ‘n)(logβ‘logβ‘n))k
μλ΅ λ μμμ μμ λλ€.)
-
λ 볡ν©μ΄λ©°, κ±°μ λͺ¨λ λλ¨Έμ§ μ€ νλμ λ°°μμ΄λ€ N μ μμΈ μλΉν μκ°μ΄ κ·Έ μμμ λ°°μκ° μλ λλ¨Έμ§μ μ΄μ μ λ§μΆ€μΌλ‘μ¨ μ μ₯ λ μ μμ΅λλ€.
nn
-
μμ°¨
r
κ° λ§€μ° ννκ±°λ μμ¬κ° κ±°μμλ κ²½μ° βμ¬κΈ°μμ μμνλ©΄ λ€μ μ΄λ¦° μ¬λ‘―μ μΆμ νκ³r
μ 보λ₯Ό κ³μ μ¬μ©νμ¬ μ 보λ₯Ό κ³μ μ μ§ βνλ©΄ λ§μ μ ν μ€μΊ λ μ€ν μ€νμ μ μ₯ν μ μμ΅λλ€. μκ°. -
λλ¬ κ°λ₯μ± λ§ μΆμ νκ³ ν립 λ λμ μκ³ λ¦¬μ¦μμ λΉνΈ λ§μ€ν¬λ₯Ό μ¬μ©ν λ€μ λμ λλ¨Έμ§μ λλ¬νλ©΄ μ μΆμ νμ¬ λ‘κ·Έ μμ λ₯Ό λ©΄λ ν μ μμ΅λλ€ .
-
λμ νλ‘κ·Έλλ° μκ³ λ¦¬μ¦μ λ³λ ¬λ‘ μ€νλ μ μμ΅λλ€. κ° λ²νΌ μ¬λ‘―μ λν νλ‘μΈμλ₯Ό μ¬μ©νλ©΄ κΉμ§ λ΄λ €κ° μ μμ΅λλ€ . λλ O ( n 2 ) νμ μ¬μ©νκ³ λ°λ³΅ μ§κ³ λμ μ§κ³λ₯Ό λΆν λ° μ 볡ν¨μΌλ‘μ¨ νλ‘ κΉμ΄ λΉμ©μ O ( log 2 n ) κΉμ§ μ€μΌ μ μμ΅λλ€ .
O(n)O(n2)
O(log2β‘n)
-
(λ©ν) λλ λΉμ μ΄ κ²ͺμ λ¬Έμ κ° μ°μμ μΈ ν© μ κ΄ν κ²μ΄λΌκ³ κ°λ ₯ν μμ¬ν©λλ€ . μ€μ λ¬Έμ μ μ°κ²°λμ΄ μμΌλ©΄ μ½κ² νμΈν μ μμ΅λλ€. κ·Έλ μ§ μμΌλ©΄μ΄ λ¬Έμ κ° βμκ³ λ¦¬μ¦ μκ°βλΌλ κ³Όμ μμ λ°°μ λ κ²μ κ°μν λμ΄ λ¬Έμ κ° μΌλ§λ μ΄λ €μ΄μ§ λ§€μ° λλμ΅λλ€. κ·Έλ¬λ μ΄μ©λ©΄ λΉμ μ κ·Έκ²μ μ¬μνκ² λ§λλ νΈλ¦μ λ€λ£¨μμ΅λλ€.
λ΅λ³
λ΄κ° μ μν μκ³ λ¦¬μ¦μ λ€μκ³Ό κ°μ΅λλ€.
nμ λ°°μ μΈ summand λ§ μΆκ°νλ©΄ ν©μ nμΌλ‘ λλ μ μμ΅λλ€.
μμνκΈ° μ μ intλ₯Ό ν€λ‘, μΈλ±μ€ λͺ©λ‘μ κ°μΌλ‘ μ¬μ©νμ¬ ν΄μ 맡μ μμ±νμμμ€. λν μμΈμ΄ ν¬ν¨ λ κ²°κ³Ό λͺ©λ‘μ λ§λλλ€.
κ·Έλ° λ€μ λ°°μ΄μ λ°λ³΅νκ³ mod nμ΄ 0 μΈ λͺ¨λ μΈλ±μ€λ₯Ό κ²°κ³Ό λͺ©λ‘μ μΆκ°ν©λλ€. λ€λ₯Έ λͺ¨λ μμΈμ λν΄ λ€μμ μννμμμ€.
μ΄ μΈλ±μ€μ κ° mod nμ nμμ λΊλλ€. μ΄ κ²°κ³Όλ νμν κ°μ κ°μ§ μμμ μΈλ±μ€λ₯Ό μ μ₯νλ ν΄μ 맡μ ν΅μ¬μ λλ€. μ΄μ μ΄ μμΈμ ν΄μ 맡μ λͺ©λ‘μ μΆκ°νκ³ κ³μ μ§ννμμμ€.
λ°°μ΄μ λ°λ³΅ ν ν μΆλ ₯μ κ³μ°ν©λλ€. μΈλ±μ€κ° κ°λ¦¬ν€λ κ°μ λ°λΌ ν΄μ 맡μ κ° λͺ©λ‘μ μ λ ¬νλ©΄λ©λλ€. μ΄μ ν΄μ 맡μ λͺ¨λ μμ΄ nκΉμ§ ν©μ°λλ κ²μ κ³ λ €νμμμ€. λ°λΌμ n = 7μ΄λ©΄ ν΄μ 맡μμ 3κ³Ό 4λ₯Ό κ²μν©λλ€. λ λ€μ νλͺ©μ΄ μμΌλ©΄ λ κ°μ κ°μ₯ ν° κ°μ κ°μ Έ μμ λͺ©λ‘μμ μ κ±°νκ³ κ²°κ³Ό λͺ©λ‘μ μΆκ°ν©λλ€.
λ§μ§λ§ κΆμ₯ μ¬ν : μ¬μ ν μκ³ λ¦¬μ¦μ ν μ€νΈνμ§ μμκ³ λ¬΄μ°¨λ³ κ°μ μκ³ λ¦¬μ¦μ μ¬μ©νμ¬ ν μ€νΈ μΌμ΄μ€λ₯Ό μμ±νμμμ€.
λ΅λ³
μ΄ DP λ°©λ²μ μ¬μ©νμμμ€ ( /programming/4487438/maximum-sum-of-non-consecutive-elements?rq=1 ) :
λ°°μ΄ A [0..n]μ΄ μ£Όμ΄μ§λ©΄ μΈλ±μ€ 0..iλ₯Ό κ°λ μμλ₯Ό μ¬μ©νμ¬ M (i)μ μ΅μ μ μ루μ μΌλ‘ λ§λμμμ€. κ·Έλ° λ€μ M (-1) = 0 (λ°λ³΅μ μ¬μ©λ¨), M (0) = A [0] λ° M (i) = max (M (i-1), M (i-2) + A [i ])μ λν΄ i = 1, β¦, nμ λλ€. M (n)μ μ°λ¦¬κ° μνλ μ루μ μ λλ€. μ΄κ²μ O (n) μ λλ€. λ€λ₯Έ λ°°μ΄μ μ¬μ©νμ¬ κ° νμ λ¬Έμ μ λν΄ μ νν νλͺ©μ μ μ₯ν μ μμΌλ―λ‘ μ νν μ€μ μμλ₯Ό 볡ꡬ ν μ μμ΅λλ€.
μ¬κ·λ₯Ό M (i) = max (M (i-1), M (i-2) + A [i])λ‘ λ³κ²½νμ¬ NμΌλ‘ λλ μμλ κ²½μ°μλ§ μ μ₯ν©λλ€.