less than 1 minute read

πŸ“˜ 합을 κ΅¬ν•˜λŠ” 법

5, 4, 3, 2, 1 의 5가지 값이 λ“€μ–΄μ˜€κ³ , 1-3κΉŒμ§€μ˜ 합을 κ΅¬ν•˜λŠ” 방법은 λ‹€μŒκ³Ό κ°™λ‹€.
λ‹€μŒκ³Ό 같이 λ“€μ–΄μ˜¨ 값을 배열에 넣은 ν›„, 1, 2, 3의 μ£Όμ†Œμ— μžˆλŠ” 5, 4, 3을 더해주면 λœλ‹€.

image

ν•˜μ§€λ§Œ 이와 같은 κ²½μš°λŠ” 1-3의 ν•©, 1-5의 ν•©, 1-4κΉŒμ§€μ˜ 합을 계산후 printμ‹œν‚¬μ‹œ, for문이 3, 4, 5번 돌게 λœλ‹€.
λ”°λΌμ„œ N개의 μˆ«μžμ™€ N번의 계산을 κ΅¬ν•˜λŠ” λ¬Έμ œκ°€ λ‚˜μ™”μ„ μ‹œ, μ΅œμ•…μ˜ 경우 O(n^2)의 μ‹œκ°„λ³΅μž‘λ„κ°€ 되게 λœλ‹€.


πŸ“– λˆ„μ  ν•© (Prefix Sum)

이λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ λ“±μž₯ν•œ κ°œλ…μ΄ λ°”λ‘œ λˆ„μ  ν•©(Prefix Sum)이닀.
Prefix Sum말 κ·ΈλŒ€λ‘œ 미리 Sum을 ν•œλ‹€λŠ” λœ»μ΄λ‹€.

κ°œλ…μ€ 맀우 κ°„λ‹¨ν•˜λ‹€.
μ²˜μŒμ— 배열에 값을 넣을 λ•Œ, λ°”λ‘œ 넣지 μ•Šκ³ , 받은값과 이전값을 ν•©μ³μ„œ 배열에 λ„£λŠ”λ‹€.
λ”°λΌμ„œ 5, 4, 3, 2, 1μ΄λΌλŠ” 값이 듀어왔을 λ•Œ, λ‹€μŒκ³Ό 같이 값이 μ €μž₯되게 λœλ‹€.

image

이쀑 1-3을 κ΅¬ν•˜λ €λ©΄ λ‹¨μˆœν•˜κ²Œ 3의 μ£Όμ†Œκ°’μ˜ κ°’μ—μ„œ 1보닀 이전 μ£Όμ†Œκ°’ ν•˜μ§€λ§Œ μ—†μœΌλ―€λ‘œ, 즉 0을 λΉΌλ©΄ λœλ‹€.

μ΄λ ‡κ²Œ λˆ„μ ν•©μ„ μ‚¬μš©ν•˜λ―€λ‘œμ¨ μœ„μ—μ„œμ˜ o(n^2)μ΄λΌλŠ” λ”μ°ν•œ μ†λ„μ—μ„œ o(n)으둜 ν˜„μ €νžˆ λΉ¨λΌμ§€κ²Œ λœλ‹€.


πŸ”— κ΄€λ ¨ μ˜ˆμ‹œ

tag:Prefix Sum



개인 곡뢀 기둝용 λΈ”λ‘œκ·Έμž…λ‹ˆλ‹€.
ν‹€λ¦¬κ±°λ‚˜ 였λ₯˜κ°€ μžˆμ„ 경우 μ œλ³΄ν•΄μ£Όμ‹œλ©΄ κ°μ‚¬ν•˜κ² μŠ΅λ‹ˆλ‹€.😁