Skip to content

[Algorithm] MinAvgTwoSliceΒ #141

Description

@hwangJi-dev

πŸ’¬Β λ¬Έμ œ

https://app.codility.com/programmers/lessons/5-prefix_sums/min_avg_two_slice/


πŸ’¬Β Idea

O(N**2)의 풀이밖에 λ– μ˜€λ₯΄μ§€ μ•Šμ•„μ„œ ν˜Ήμ‹œλ‚˜..? ν•˜κ³  μ œμΆœν•΄λ΄€μ§€λ§Œ μ—­μ‹œλ‚˜ 😊😊!!!! O(N)의 풀이여야 νš¨μœ¨μ„± ν…ŒμŠ€νŠΈλ₯Ό 톡과할 수 μžˆμ—ˆλ‹€. λ”°λΌμ„œ O(N)의 풀이λ₯Ό λ„μΆœν•˜λ € ν•΄λ΄€μ§€λ§Œ λ„μ €νžˆ O(N)의 μ‹œκ°„λ³΅μž‘λ„λ₯Ό κ°–λŠ” 풀이가 μƒκ°λ‚˜μ§€ μ•Šμ•˜λ‹€. κ·Έλž˜μ„œ λ‹€λ₯Έ λΈ”λ‘œκ·Έλ₯Ό μ°Έκ³ ν–ˆλŠ”λ°, ν‰κ· κ°’μ˜ μ›λ¦¬λΌλŠ” μˆ˜ν•™ 곡식을 μƒˆλ‘œ μ•Œκ²Œλ˜μ—ˆλ‹€ !!

ν‰κ· κ°’μ˜ 원리

πŸ’‘ κ΅¬κ°„μ˜ 평균은 λΆ€λΆ„κ΅¬κ°„μ˜ 평균 쀑 κ°€μž₯ μž‘μ€ λΆ€λΆ„κ΅¬κ°„μ˜ 평균보닀 크닀.

평균은 μ–΄λŠ 두 μˆ˜κ°€ μžˆμ„ λ•Œ κ°€μž₯ μž‘μ€ μˆ˜λ³΄λ‹€ 큰 값을 κ°€μ§„λ‹€. 이 μ›λ¦¬λ‘œ μƒκ°ν•΄λ³΄μ•˜μ„ λ•Œ, μ›μ†Œκ°€ 4개인 그룹의 평균은 μ•ž 2개, λ’€ 2개둜 λ‚˜λˆ„μ–΄λ³Έλ‹€λ©΄ μ•ž λ’€ 쀑 μž‘μ€ 그룹보닀 큰 값을 κ°€μ§ˆ 것이닀. λ”°λΌμ„œ 2개인 그룹듀을 κ³ λ €ν•˜λ©΄ 4개인 그룹은 확인할 ν•„μš”κ°€ μ—†μ–΄μ§„λ‹€.

  • 짝수개둜 μͺΌκ°œμ§„ 배열듀은(2개, 4개, 6개, 8개, 10개 ,,,, λ“±μœΌλ‘œ 배열을 μŠ¬λΌμ΄μ‹±ν•œ 경우) 2개의 λΆ€λΆ„κ·Έλ£Ήλ“€λ‘œ λ‹€μ‹œ μͺΌκ°œμ§ˆ 수 있고
  • ν™€μˆ˜κ°œμ˜ 뢀뢄그룹듀은 3개 + 2개 μ‘°ν•©μ˜ λΆ€λΆ„κ·Έλ£ΉμœΌλ‘œ μͺΌκ°œμ§ˆ 수 μžˆμ„ 것이닀.
  • 3κ°œλ„ 2개 + 1개둜 μͺΌκ°œμ§ˆ 수 μžˆμ§€λ§Œ, λ¬Έμ œμ—μ„œ κ·Έλ£Ή(==뢀뢄ꡬ간)은 2κ°œλΆ€ν„° μ‹œμž‘μ΄λΌκ³  ν–ˆμœΌλ―€λ‘œ 3κ°œλŠ” μͺΌκ°œμ§ˆ 수 μ—†λ‹€.

λ”°λΌμ„œ 이 문제λ₯Ό ν’€κΈ° μœ„ν•΄μ„œ 배열을 2개, 3개둜만 μŠ¬λΌμ΄μ‹±ν•΄μ„œ 평균을 ꡬ해보면 κ°€μž₯ μž‘μ€ 평균값을 μ•Œ 수 있고, μ΅œμ†Œ μ‹œμž‘ 인덱슀 λ˜ν•œ λ„μΆœν•  수 μžˆλ‹€.


πŸ’¬Β ν’€μ΄

publicfunc solution4(A :inout[Int])->Int{varminAvgValue:Double=Double(A[0]+ A[1])/2varminIndex=0foriin2..<A.count {letavg2:Double=Double(A[i -1]+ A[i])/2if minAvgValue > avg2 {
minAvgValue = avg2
minIndex = i -1}letavg3:Double=Double(A[i -2]+ A[i -1]+ A[i])/3if minAvgValue > avg3 {
minAvgValue = avg3
minIndex = i -2}}return minIndex
}

μ‹œκ°„ λ³΅μž‘λ„ : O(N)

ν‰κ°€ν‘œ : https://app.codility.com/demo/results/training6Y3P9V-3AR/

μ½”λ”œλ¦¬ν‹°β€¦ μ°Έ μ’‹λ‹€ 😊 

<μ°Έκ³ >

https://nukeguys.tistory.com/175

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions