ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

728x90
๋ฐ˜์‘ํ˜•

๋ฌธ์ œ

https://app.codility.com/programmers/lessons/3-time_complexity/tape_equilibrium/

๋ฐฐ์—ด์— ๋‹ค์„ฏ๊ฐœ์˜ ๊ฐ’๋“ค์ด ์žˆ์œผ๋ฉด ๊ฐ ๊ตฌ๊ฐ„ ๋ณ„๋กœ ๋‚˜๋ˆ„์–ด ๊ฐ’์„ ํ•ฉ์‚ฐ ํ›„์— ์ฐจ๋ฅผ ๊ณ„์‚ฐํ•˜์—ฌ ๊ฐ€์žฅ ์ž‘์€ ์ฐจ๊ฐ€ ๋˜๋Š” ๊ฐ’์„ ์ฐพ๋Š” ๋ฌธ์ œ์ด๋‹ค.

๋ฌธ์ œ ํ’€์ด

์ฒ˜์Œ์—๋Š” list๋ฅผ ์Šฌ๋ผ์ด์‹ฑํ•˜์—ฌ ๋ฌธ์ œ์— ์ ‘๊ทผํ•˜์˜€๋‹ค. ์Šฌ๋ผ์ด์‹ฑ์œผ๋กœ ์ธํ•œ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๊ทธ๋ ‡๊ฒŒ ํฐ์ง€๋Š” ์ฒ˜์Œ ์•Œ์•˜๋‹ค.

def soultion(A):
    min_diff = None

    for i in range(len(A) - 1):
        diff = abs(sum(A[:i + 1]) - sum(A[i + 1:]))

        if min_diff is None:
            min_diff = diff
        else:
            min_diff = min(min_diff, diff)
  • ์ตœ์ดˆ์— ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋Š” ๋ณต์žก๋„๊ฐ€ N^2์ด์–ด์„œ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ํ†ต๊ณผํ•˜์ง€ ๋ชปํ•œ๋‹ค.

์ฝ”๋“œ

def solution(A):
    left = 0
    right = sum(A)
    min_diff = None

    for i in range(1, len(A)):
        left += A[i - 1]
        right -= A[i - 1]
        diff = abs(left - right)

        if min_diff is None:
            min_diff = diff
        else:
            min_diff = min(min_diff, diff)

    return min_diff
  • ๋ฆฌ์ŠคํŠธ๋ฅผ ์Šฌ๋ผ์ด์‹ฑ ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ, ์ตœ์ดˆ์— ํ•ฉ์„ ๊ตฌํ•ด๋‘๊ณ  left์—๋Š” ๊ฐ’์„ ๋”ํ•˜๊ณ , right์—๋Š” ๊ฐ’์„ ๋นผ์ฃผ์–ด ๊ฐ€์žฅ ์ž‘์€ diff๋ฅผ ์ฐพ๋„๋ก ํ•œ๋‹ค.
    • ์ด ๊ฒฝ์šฐ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” N์ด๋‹ค.
728x90
๋ฐ˜์‘ํ˜•
๋Œ“๊ธ€
๊ธ€ ๋ณด๊ด€ํ•จ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€