๋‚ด ์ธ์ƒ์—์„œ ๋ฏฟ์„ ๊ฑด ์˜ค์ง ๋‚˜ ์ž์‹ ๋ฟ!

The only one you can truly trust is yourself.

๊ฒŒ์ž„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ/Python ํ”„๋กœ๊ทธ๋ž˜๋ฐ

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค LV2 ์—ฐ์†๋œ ๋ถ€๋ถ„ ์ˆ˜์—ด์˜ ํ•ฉ

๐ŸŽฎinspirer9 2023. 6. 23. 01:18
728x90
๋ฐ˜์‘ํ˜•

๋ฌธ์ œ ์„ค๋ช…

๋น„๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋œ ์ˆ˜์—ด์ด ์ฃผ์–ด์งˆ ๋•Œ, ๋‹ค์Œ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๋ถ€๋ถ„ ์ˆ˜์—ด์„ ์ฐพ์œผ๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

  • ๊ธฐ์กด ์ˆ˜์—ด์—์„œ ์ž„์˜์˜ ๋‘ ์ธ๋ฑ์Šค์˜ ์›์†Œ์™€ ๊ทธ ์‚ฌ์ด์˜ ์›์†Œ๋ฅผ ๋ชจ๋‘ ํฌํ•จํ•˜๋Š” ๋ถ€๋ถ„ ์ˆ˜์—ด์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ถ€๋ถ„ ์ˆ˜์—ด์˜ ํ•ฉ์€ k์ž…๋‹ˆ๋‹ค.
  • ํ•ฉ์ด k์ธ ๋ถ€๋ถ„ ์ˆ˜์—ด์ด ์—ฌ๋Ÿฌ ๊ฐœ์ธ ๊ฒฝ์šฐ ๊ธธ์ด๊ฐ€ ์งง์€ ์ˆ˜์—ด์„ ์ฐพ์Šต๋‹ˆ๋‹ค.
  • ๊ธธ์ด๊ฐ€ ์งง์€ ์ˆ˜์—ด์ด ์—ฌ๋Ÿฌ ๊ฐœ์ธ ๊ฒฝ์šฐ ์•ž์ชฝ(์‹œ์ž‘ ์ธ๋ฑ์Šค๊ฐ€ ์ž‘์€)์— ๋‚˜์˜ค๋Š” ์ˆ˜์—ด์„ ์ฐพ์Šต๋‹ˆ๋‹ค.

์ˆ˜์—ด์„ ๋‚˜ํƒ€๋‚ด๋Š” ์ •์ˆ˜ ๋ฐฐ์—ด sequence์™€ ๋ถ€๋ถ„ ์ˆ˜์—ด์˜ ํ•ฉ์„ ๋‚˜ํƒ€๋‚ด๋Š” ์ •์ˆ˜ k๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ์œ„ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๋ถ€๋ถ„ ์ˆ˜์—ด์˜ ์‹œ์ž‘ ์ธ๋ฑ์Šค์™€ ๋งˆ์ง€๋ง‰ ์ธ๋ฑ์Šค๋ฅผ ๋ฐฐ์—ด์— ๋‹ด์•„ return ํ•˜๋Š” solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”. ์ด๋•Œ ์ˆ˜์—ด์˜ ์ธ๋ฑ์Šค๋Š” 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

์ œํ•œ ์‚ฌํ•ญ

  • 5 ≤ sequence์˜ ๊ธธ์ด ≤ 1,000,000
    • 1 ≤ sequence์˜ ์›์†Œ ≤ 1,000
    • sequence๋Š” ๋น„๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • 5 ≤ k ≤ 1,000,000,000
    • k๋Š” ํ•ญ์ƒ sequence์˜ ๋ถ€๋ถ„ ์ˆ˜์—ด๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๊ฐ’์ž…๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ

sequence k result
[1, 2, 3, 4, 5] 7 [2,3]
[1, 1, 1, 2, 3, 4, 5] 5 [6,6]
[2, 2, 2, 2, 2] 6 [0,2]

์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…

  • ์ž…์ถœ๋ ฅ ์˜ˆ #1
    • [1, 2, 3, 4, 5]์—์„œ ํ•ฉ์ด 7์ธ ์—ฐ์†๋œ ๋ถ€๋ถ„ ์ˆ˜์—ด์€ [3, 4]๋ฟ์ด๋ฏ€๋กœ ํ•ด๋‹น ์ˆ˜์—ด์˜ ์‹œ์ž‘ ์ธ๋ฑ์Šค์ธ 2์™€ ๋งˆ์ง€๋ง‰ ์ธ๋ฑ์Šค 3์„ ๋ฐฐ์—ด์— ๋‹ด์•„ [2, 3]์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
  • ์ž…์ถœ๋ ฅ ์˜ˆ #2
    • [1, 1, 1, 2, 3, 4, 5]์—์„œ ํ•ฉ์ด 5์ธ ์—ฐ์†๋œ ๋ถ€๋ถ„ ์ˆ˜์—ด์€ [1, 1, 1, 2], [2, 3], [5]๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ค‘ [5]์˜ ๊ธธ์ด๊ฐ€ ์ œ์ผ ์งง์œผ๋ฏ€๋กœ ํ•ด๋‹น ์ˆ˜์—ด์˜ ์‹œ์ž‘ ์ธ๋ฑ์Šค์™€ ๋งˆ์ง€๋ง‰ ์ธ๋ฑ์Šค๋ฅผ ๋‹ด์€ [6, 6]์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
  • ์ž…์ถœ๋ ฅ ์˜ˆ #3
    • [2, 2, 2, 2, 2]์—์„œ ํ•ฉ์ด 6์ธ ์—ฐ์†๋œ ๋ถ€๋ถ„ ์ˆ˜์—ด์€ [2, 2, 2]๋กœ 3๊ฐ€์ง€ ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋Š”๋ฐ, ๊ธธ์ด๊ฐ€ ์งง์€ ์ˆ˜์—ด์ด ์—ฌ๋Ÿฌ ๊ฐœ์ธ ๊ฒฝ์šฐ ์•ž์ชฝ์— ๋‚˜์˜จ ์ˆ˜์—ด์„ ์ฐพ์œผ๋ฏ€๋กœ [0, 2]๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

ํ’€์ด

  • ๋น„๋‚ด๋ฆผ์ฐจ์ˆœ์ด ์˜ค๋ฆ„์ฐจ์ˆœ์ด๋ผ๋Š” ๋ง์ผ๊นŒ?
  • ๊ทธ๋ฆฌ๊ณ  ์Šฌ๋ผ์ด๋”ฉ ๋„์–ด๋กœ ๋จน์€ ์• ๋“ค์€ ํ•ฉ์‚ฐํ•˜๊ณ  ๋„˜์น˜๋ฉด ๋’ค๋กœ ๋˜ฅ ์‹ธ๋ฉด์„œ ์ญˆ์šฑ ์ง„ํ–‰ํ•˜๋ฉด ๋˜๋Š”๊ฑด๊ฐ€?
  • ์•„ ๊ทธ๋ฆฌ๊ณ  ์ˆ˜์—ด์— k๊ฐ’์ด ์žˆ์œผ๋ฉด ๊ธธ์ด 1 ์งœ๋ฆฌ ๋ถ€๋ถ„ ์ˆ˜์—ด์„ ๋ฆฌํ„ดํ•˜๋ฉด ๋˜๋Š”๊ฑด๊ฐ€? ์š”๊ฑด ๋ฐ”๋กœ ํ…Œ์ŠคํŠธ ํ•ด๋ณด์ž.
    • ์žˆ๋„ค? (์™ผ์ชฝ)
    • ๊ทธ๋ฆฌ๊ณ  ์–ด์ฐจํ”ผ k๋Š” ํ•ญ์ƒ seq์˜ ๋ถ€๋ถ„ ์ˆ˜์—ด๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๊ฐ’์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฌด์กฐ๊ฑด ์žˆ๋‹ค.
    • ๊ทธ๋Ÿผ ๋งจ ์•ž์—์„œ ์š”๊ธฐ ๊ฑธ๋ฆฌ๋ฉด ํ•œ๋ฒˆ ์ฑ„๋กœ ์ณ์ฃผ๊ณ  else๋ถ€ํ„ฐ ์ง„ํ–‰ํ•˜๋ฉด ๋  ๋“ฏ? (์˜ค๋ฅธ์ชฝ)

  • ์งœ์ž”-!
def solution(sequence, k):
    answer = []
    short = 10000000
    index = 0
    head = 0
    tail = 0
    total = 0
    
    if k in sequence:
        i = sequence.index(k)
        return [i,i]
    else:
        for i,v in enumerate(sequence):
            head = i
            total += v
            if total == k:
                answer.append([tail, head])
                if head-tail < short:
                    short = head-tail
                    index = len(answer)
                total -= sequence[tail]
                tail += 1
            elif total > k:
                while total > k:
                    total -= sequence[tail]
                    tail += 1
                if total == k:
                    answer.append([tail, head])
                    if head-tail < short:
                        short = head-tail
                        index = len(answer)
                    total -= sequence[tail]
                    tail += 1

    return answer[index-1]
728x90
๋ฐ˜์‘ํ˜•