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

The only one you can truly trust is yourself.

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

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ง•๊ฒ€๋‹ค๋ฆฌ ๊ฑด๋„ˆ๊ธฐ (2019 ์นด์นด์˜ค ๊ฐœ๋ฐœ์ž ๊ฒจ์šธ ์ธํ„ด์‰ฝ, ์ด๋ถ„ํƒ์ƒ‰)

๐ŸŽฎinspirer9 2023. 2. 28. 16:34
728x90
๋ฐ˜์‘ํ˜•

๋ฌธ์ œ ์„ค๋ช…

[๋ณธ ๋ฌธ์ œ๋Š” ์ •ํ™•์„ฑ๊ณผ ํšจ์œจ์„ฑ ํ…Œ์ŠคํŠธ ๊ฐ๊ฐ ์ ์ˆ˜๊ฐ€ ์žˆ๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.]

์นด์นด์˜ค ์ดˆ๋“ฑํ•™๊ต์˜ "๋‹ˆ๋‹ˆ์ฆˆ ์นœ๊ตฌ๋“ค"์ด "๋ผ์ด์–ธ" ์„ ์ƒ๋‹˜๊ณผ ํ•จ๊ป˜ ๊ฐ€์„ ์†Œํ’์„ ๊ฐ€๋Š” ์ค‘์— ์ง•๊ฒ€๋‹ค๋ฆฌ๊ฐ€ ์žˆ๋Š” ๊ฐœ์šธ์„ ๋งŒ๋‚˜์„œ ๊ฑด๋„ˆํŽธ์œผ๋กœ ๊ฑด๋„ˆ๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. "๋ผ์ด์–ธ" ์„ ์ƒ๋‹˜์€ "๋‹ˆ๋‹ˆ์ฆˆ ์นœ๊ตฌ๋“ค"์ด ๋ฌด์‚ฌํžˆ ์ง•๊ฒ€๋‹ค๋ฆฌ๋ฅผ ๊ฑด๋„ ์ˆ˜ ์žˆ๋„๋ก ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ทœ์น™์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

  • ์ง•๊ฒ€๋‹ค๋ฆฌ๋Š” ์ผ๋ ฌ๋กœ ๋†“์—ฌ ์žˆ๊ณ  ๊ฐ ์ง•๊ฒ€๋‹ค๋ฆฌ์˜ ๋””๋”ค๋Œ์—๋Š” ๋ชจ๋‘ ์ˆซ์ž๊ฐ€ ์ ํ˜€ ์žˆ์œผ๋ฉฐ ๋””๋”ค๋Œ์˜ ์ˆซ์ž๋Š” ํ•œ ๋ฒˆ ๋ฐŸ์„ ๋•Œ๋งˆ๋‹ค 1์”ฉ ์ค„์–ด๋“ญ๋‹ˆ๋‹ค.
  • ๋””๋”ค๋Œ์˜ ์ˆซ์ž๊ฐ€ 0์ด ๋˜๋ฉด ๋” ์ด์ƒ ๋ฐŸ์„ ์ˆ˜ ์—†์œผ๋ฉฐ ์ด๋•Œ๋Š” ๊ทธ ๋‹ค์Œ ๋””๋”ค๋Œ๋กœ ํ•œ๋ฒˆ์— ์—ฌ๋Ÿฌ ์นธ์„ ๊ฑด๋„ˆ ๋›ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋‹จ, ๋‹ค์Œ์œผ๋กœ ๋ฐŸ์„ ์ˆ˜ ์žˆ๋Š” ๋””๋”ค๋Œ์ด ์—ฌ๋Ÿฌ ๊ฐœ์ธ ๊ฒฝ์šฐ ๋ฌด์กฐ๊ฑด ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๋””๋”ค๋Œ๋กœ๋งŒ ๊ฑด๋„ˆ๋›ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

"๋‹ˆ๋‹ˆ์ฆˆ ์นœ๊ตฌ๋“ค"์€ ๊ฐœ์šธ์˜ ์™ผ์ชฝ์— ์žˆ์œผ๋ฉฐ, ๊ฐœ์šธ์˜ ์˜ค๋ฅธ์ชฝ ๊ฑด๋„ˆํŽธ์— ๋„์ฐฉํ•ด์•ผ ์ง•๊ฒ€๋‹ค๋ฆฌ๋ฅผ ๊ฑด๋„Œ ๊ฒƒ์œผ๋กœ ์ธ์ •ํ•ฉ๋‹ˆ๋‹ค.
"๋‹ˆ๋‹ˆ์ฆˆ ์นœ๊ตฌ๋“ค"์€ ํ•œ ๋ฒˆ์— ํ•œ ๋ช…์”ฉ ์ง•๊ฒ€๋‹ค๋ฆฌ๋ฅผ ๊ฑด๋„ˆ์•ผ ํ•˜๋ฉฐ, ํ•œ ์นœ๊ตฌ๊ฐ€ ์ง•๊ฒ€๋‹ค๋ฆฌ๋ฅผ ๋ชจ๋‘ ๊ฑด๋„Œ ํ›„์— ๊ทธ ๋‹ค์Œ ์นœ๊ตฌ๊ฐ€ ๊ฑด๋„ˆ๊ธฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

๋””๋”ค๋Œ์— ์ ํžŒ ์ˆซ์ž๊ฐ€ ์ˆœ์„œ๋Œ€๋กœ ๋‹ด๊ธด ๋ฐฐ์—ด stones์™€ ํ•œ ๋ฒˆ์— ๊ฑด๋„ˆ๋›ธ ์ˆ˜ ์žˆ๋Š” ๋””๋”ค๋Œ์˜ ์ตœ๋Œ€ ์นธ์ˆ˜ k๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ์ตœ๋Œ€ ๋ช‡ ๋ช…๊นŒ์ง€ ์ง•๊ฒ€๋‹ค๋ฆฌ๋ฅผ ๊ฑด๋„ ์ˆ˜ ์žˆ๋Š”์ง€ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

์ œํ•œ ์‚ฌํ•ญ

  • ์ง•๊ฒ€๋‹ค๋ฆฌ๋ฅผ ๊ฑด๋„ˆ์•ผ ํ•˜๋Š” ๋‹ˆ๋‹ˆ์ฆˆ ์นœ๊ตฌ๋“ค์˜ ์ˆ˜๋Š” ๋ฌด์ œํ•œ ์ด๋ผ๊ณ  ๊ฐ„์ฃผํ•ฉ๋‹ˆ๋‹ค.
  • stones ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋Š” 1 ์ด์ƒ 200,000 ์ดํ•˜์ž…๋‹ˆ๋‹ค.
  • stones ๋ฐฐ์—ด ๊ฐ ์›์†Œ๋“ค์˜ ๊ฐ’์€ 1 ์ด์ƒ 200,000,000 ์ดํ•˜์ธ ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค.
  • k๋Š” 1 ์ด์ƒ stones์˜ ๊ธธ์ด ์ดํ•˜์ธ ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ

stones k result
[2, 4, 5, 3, 2, 1, 4, 2, 5, 1] 3 3

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

์ž…์ถœ๋ ฅ ์˜ˆ #1

์ฒซ ๋ฒˆ์งธ ์นœ๊ตฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ง•๊ฒ€๋‹ค๋ฆฌ๋ฅผ ๊ฑด๋„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฒซ ๋ฒˆ์งธ ์นœ๊ตฌ๊ฐ€ ์ง•๊ฒ€๋‹ค๋ฆฌ๋ฅผ ๊ฑด๋„Œ ํ›„ ๋””๋”ค๋Œ์— ์ ํžŒ ์ˆซ์ž๋Š” ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
๋‘ ๋ฒˆ์งธ ์นœ๊ตฌ๋„ ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ์ง•๊ฒ€๋‹ค๋ฆฌ๋ฅผ ๊ฑด๋„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‘ ๋ฒˆ์งธ ์นœ๊ตฌ๊ฐ€ ์ง•๊ฒ€๋‹ค๋ฆฌ๋ฅผ ๊ฑด๋„Œ ํ›„ ๋””๋”ค๋Œ์— ์ ํžŒ ์ˆซ์ž๋Š” ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
์„ธ ๋ฒˆ์งธ ์นœ๊ตฌ๋„ ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ์ง•๊ฒ€๋‹ค๋ฆฌ๋ฅผ ๊ฑด๋„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์„ธ ๋ฒˆ์งธ ์นœ๊ตฌ๊ฐ€ ์ง•๊ฒ€๋‹ค๋ฆฌ๋ฅผ ๊ฑด๋„Œ ํ›„ ๋””๋”ค๋Œ์— ์ ํžŒ ์ˆซ์ž๋Š” ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
๋„ค ๋ฒˆ์งธ ์นœ๊ตฌ๊ฐ€ ์ง•๊ฒ€๋‹ค๋ฆฌ๋ฅผ ๊ฑด๋„ˆ๋ ค๋ฉด, ์„ธ ๋ฒˆ์งธ ๋””๋”ค๋Œ์—์„œ ์ผ๊ณฑ ๋ฒˆ์งธ ๋””๋”ค๋Œ๋กœ ๋„ค ์นธ์„ ๊ฑด๋„ˆ๋›ฐ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ k = 3 ์ด๋ฏ€๋กœ ๊ฑด๋„ˆ๋›ธ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์ตœ๋Œ€ 3๋ช…์ด ๋””๋”ค๋Œ์„ ๋ชจ๋‘ ๊ฑด๋„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ’€์ด

  • ์ด ๋ฌธ์ œ๋Š” ์ด๊ฑด ์–ด๋””๊ฐ€ ๋นต๊พธ๋‚˜๋Š”์ง€ ์•Œ๋ฉด ๋˜๋Š”๊ฑฐ๋„ค?
    • ์ด๊ฒƒ๋„ ์Šฌ๋ผ์ด๋”ฉ ์œˆ๋„์šฐ์ธ๊ฐ€?
  • ๊ฐ„๊ฒฉ์ด... k ๊ฐ„๊ฒฉ ๋ฒ”์œ„์—์„œ max๊ฐ’์„ ์Šฌ๋ผ์ด๋”ฉํ•˜๋ฉด์„œ ๊ฐฑ์‹ ํ•˜๊ณ 
    • ๋งˆ์ง€๋ง‰์— ์ œ์ผ ์ž‘์€ max๋ฅผ ์ €์žฅํ•˜๊ณ  ์žˆ๋‹ค๊ฐ€ ๋งˆ์ง€๋ง‰์— ๋ฆฌํ„ด...
  • k๋งŒํผ ๋นต๊พธ๋‚˜๋ฉด ๊ทธ ๋•Œ๊นŒ์ง€ ๋ฃจํ”„ ๋ˆ ํšŸ์ˆ˜๋ฅผ ๋ฆฌํ„ดํ•˜๋ฉด ๋˜๋Š” ๋ฌธ์ œ.
    • ...๋Š” ์‹œ๊ฐ„ ์ดˆ๊ณผ
import collections

def solution(stones, k):
    min_stones = 200000001
    kstonebridge = {}
    kstonebridge = collections.Counter(stones[0:k])
    # print(kstonebridge)
    for i in range(k, len(stones)):
        try:
            kstonebridge[stones[i]] += 1
        except:
            kstonebridge[stones[i]] = 1
        kstonebridge[stones[i-k]] -= 1
        if kstonebridge[stones[i-k]] == 0:
            del kstonebridge[stones[i-k]]
        if min_stones > max(kstonebridge):
            min_stones = max(kstonebridge)
        
    return min_stones
    
์ •ํ™•์„ฑ  ํ…Œ์ŠคํŠธ
ํ…Œ์ŠคํŠธ 1 ใ€‰	์‹คํŒจ (0.02ms, 10.3MB)
ํ…Œ์ŠคํŠธ 2 ใ€‰	ํ†ต๊ณผ (0.05ms, 10.2MB)
ํ…Œ์ŠคํŠธ 3 ใ€‰	ํ†ต๊ณผ (0.06ms, 10.3MB)
ํ…Œ์ŠคํŠธ 4 ใ€‰	ํ†ต๊ณผ (0.12ms, 10.1MB)
ํ…Œ์ŠคํŠธ 5 ใ€‰	ํ†ต๊ณผ (0.13ms, 10.1MB)
ํ…Œ์ŠคํŠธ 6 ใ€‰	ํ†ต๊ณผ (0.64ms, 10.2MB)
ํ…Œ์ŠคํŠธ 7 ใ€‰	ํ†ต๊ณผ (2.58ms, 10.3MB)
ํ…Œ์ŠคํŠธ 8 ใ€‰	ํ†ต๊ณผ (3.22ms, 10.2MB)
ํ…Œ์ŠคํŠธ 9 ใ€‰	ํ†ต๊ณผ (2.44ms, 10.2MB)
ํ…Œ์ŠคํŠธ 10 ใ€‰	ํ†ต๊ณผ (0.14ms, 10.1MB)
ํ…Œ์ŠคํŠธ 11 ใ€‰	ํ†ต๊ณผ (0.04ms, 10.2MB)
ํ…Œ์ŠคํŠธ 12 ใ€‰	ํ†ต๊ณผ (0.14ms, 10.3MB)
ํ…Œ์ŠคํŠธ 13 ใ€‰	ํ†ต๊ณผ (0.25ms, 10.3MB)
ํ…Œ์ŠคํŠธ 14 ใ€‰	ํ†ต๊ณผ (0.78ms, 10MB)
ํ…Œ์ŠคํŠธ 15 ใ€‰	ํ†ต๊ณผ (2.60ms, 10.4MB)
ํ…Œ์ŠคํŠธ 16 ใ€‰	ํ†ต๊ณผ (3.58ms, 10.1MB)
ํ…Œ์ŠคํŠธ 17 ใ€‰	ํ†ต๊ณผ (3.30ms, 10.1MB)
ํ…Œ์ŠคํŠธ 18 ใ€‰	ํ†ต๊ณผ (0.07ms, 10.1MB)
ํ…Œ์ŠคํŠธ 19 ใ€‰	ํ†ต๊ณผ (0.08ms, 10MB)
ํ…Œ์ŠคํŠธ 20 ใ€‰	ํ†ต๊ณผ (0.13ms, 10.1MB)
ํ…Œ์ŠคํŠธ 21 ใ€‰	ํ†ต๊ณผ (0.63ms, 10.3MB)
ํ…Œ์ŠคํŠธ 22 ใ€‰	ํ†ต๊ณผ (1.30ms, 10.3MB)
ํ…Œ์ŠคํŠธ 23 ใ€‰	ํ†ต๊ณผ (1.77ms, 10.1MB)
ํ…Œ์ŠคํŠธ 24 ใ€‰	ํ†ต๊ณผ (2.05ms, 10.1MB)
ํ…Œ์ŠคํŠธ 25 ใ€‰	ํ†ต๊ณผ (0.06ms, 10.1MB)
ํšจ์œจ์„ฑ  ํ…Œ์ŠคํŠธ
ํ…Œ์ŠคํŠธ 1 ใ€‰	์‹คํŒจ (์‹œ๊ฐ„ ์ดˆ๊ณผ)
ํ…Œ์ŠคํŠธ 2 ใ€‰	์‹คํŒจ (์‹œ๊ฐ„ ์ดˆ๊ณผ)
ํ…Œ์ŠคํŠธ 3 ใ€‰	์‹คํŒจ (์‹œ๊ฐ„ ์ดˆ๊ณผ)
ํ…Œ์ŠคํŠธ 4 ใ€‰	์‹คํŒจ (์‹œ๊ฐ„ ์ดˆ๊ณผ)
ํ…Œ์ŠคํŠธ 5 ใ€‰	์‹คํŒจ (์‹œ๊ฐ„ ์ดˆ๊ณผ)
ํ…Œ์ŠคํŠธ 6 ใ€‰	์‹คํŒจ (์‹œ๊ฐ„ ์ดˆ๊ณผ)
ํ…Œ์ŠคํŠธ 7 ใ€‰	์‹คํŒจ (์‹œ๊ฐ„ ์ดˆ๊ณผ)
ํ…Œ์ŠคํŠธ 8 ใ€‰	์‹คํŒจ (์‹œ๊ฐ„ ์ดˆ๊ณผ)
ํ…Œ์ŠคํŠธ 9 ใ€‰	์‹คํŒจ (์‹œ๊ฐ„ ์ดˆ๊ณผ)
ํ…Œ์ŠคํŠธ 10 ใ€‰	์‹คํŒจ (์‹œ๊ฐ„ ์ดˆ๊ณผ)
ํ…Œ์ŠคํŠธ 11 ใ€‰	์‹คํŒจ (์‹œ๊ฐ„ ์ดˆ๊ณผ)
ํ…Œ์ŠคํŠธ 12 ใ€‰	์‹คํŒจ (์‹œ๊ฐ„ ์ดˆ๊ณผ)
ํ…Œ์ŠคํŠธ 13 ใ€‰	์‹คํŒจ (์‹œ๊ฐ„ ์ดˆ๊ณผ)
ํ…Œ์ŠคํŠธ 14 ใ€‰	์‹คํŒจ (์‹œ๊ฐ„ ์ดˆ๊ณผ)
  • max ํ•จ์ˆ˜ 2๋ฒˆ ์จ์„œ ๊ทธ๋Ÿฐ๊ฐ€? ์•„๋ฌด๋ฆฌ ๋œฏ์–ด๊ณ ์ณ๋„ ์•ˆ๋œ๋‹ค. ใ…‹ใ…‹ใ…‹
    • ์ด๋ถ„ํƒ์ƒ‰์œผ๋กœ ํ’€์œผ๋ผ๊ณ  ํ–ˆ์œผ๋‹ˆ ์ด๋ถ„ํƒ์ƒ‰์œผ๋กœ ํ’€์–ด์•ผ๊ฒ ๋‹ค.
import collections

def solution(stones, k):
    if k == 1:
        return min(stones)
    
    kstonebridge_set = set(stones[0:k])
    kstonebridge = {}
    kstonebridge = collections.Counter(stones[0:k])
    max_stone = max(kstonebridge)
    min_stone = max_stone
    
    for i in range(k, len(stones)):
        next_stone = stones[i]
        kstonebridge_set.add(next_stone)
        try:
            kstonebridge[next_stone] += 1
        except:
            kstonebridge[next_stone] = 1
        
        prev_stone = stones[i-k]
        kstonebridge[prev_stone] -= 1
        if kstonebridge[prev_stone] == 0:
            try:
                kstonebridge_set.remove(prev_stone)
                max_stone = max(kstonebridge_set)
                if min_stone > max_stone:
                    min_stone = max_stone
            except:
                if min_stone > max_stone:
                    min_stone = max_stone
        
    return min_stone
  • ์ด๋ถ„ํƒ์ƒ‰ ์žฌ๊ท€ ํ˜ธ์ถœ...
    • ์ •๋‹ต์„ ์ฐ๋Š” ๋ฐฉ์‹... ใ…ก.ใ…ก;;;
      • ๋‚ด๊ฐ€ ์ œ์ผ ์•ˆ์“ฐ๋Š” ๋ฐฉ๋ฒ•์ธ๋ฐ, ๋‹ต์ด 1๊ฐœ ์ผ ๋•Œ๋Š”... ์จ์•ผํ•˜๋Š”๊ตฌ๋‚˜!
import sys
sys.setrecursionlimit(10**5)

def solution(stones, k):
    low = 1
    high = max(stones)
    
    def binSearch(low, high):
        mid = (high-low)//2
        if mid == 0:
            return high
        mid += low
        cnt_stone = 0
        for stone in stones:
            if stone - mid <= 0:
                cnt_stone += 1
            else:
                cnt_stone = 0
            if cnt_stone == k:
                break
        if cnt_stone == k:
            return binSearch(low, mid)
        else:
            return binSearch(mid, high)
        
    return binSearch(low, high)
  • ํผ... ์ด๊ฒŒ ์Šฌ๋ผ์ด๋”ฉ ์ง€๋ ์ด๋กœ ํ•˜๋ ค๊ณ  ํ–ˆ๋˜ ๊ฒƒ ๋ณด๋‹ค ๋” ๋น ๋ฅด๋„ค?
์ •ํ™•์„ฑ  ํ…Œ์ŠคํŠธ
ํ…Œ์ŠคํŠธ 1 ใ€‰	ํ†ต๊ณผ (0.01ms, 10.3MB)
ํ…Œ์ŠคํŠธ 2 ใ€‰	ํ†ต๊ณผ (0.01ms, 10.2MB)
ํ…Œ์ŠคํŠธ 3 ใ€‰	ํ†ต๊ณผ (0.02ms, 10.1MB)
ํ…Œ์ŠคํŠธ 4 ใ€‰	ํ†ต๊ณผ (0.03ms, 10.1MB)
ํ…Œ์ŠคํŠธ 5 ใ€‰	ํ†ต๊ณผ (0.05ms, 10.3MB)
ํ…Œ์ŠคํŠธ 6 ใ€‰	ํ†ต๊ณผ (0.66ms, 10.3MB)
ํ…Œ์ŠคํŠธ 7 ใ€‰	ํ†ต๊ณผ (0.58ms, 10.3MB)
ํ…Œ์ŠคํŠธ 8 ใ€‰	ํ†ต๊ณผ (1.28ms, 10.1MB)
ํ…Œ์ŠคํŠธ 9 ใ€‰	ํ†ต๊ณผ (1.21ms, 10.2MB)
ํ…Œ์ŠคํŠธ 10 ใ€‰	ํ†ต๊ณผ (0.02ms, 10MB)
ํ…Œ์ŠคํŠธ 11 ใ€‰	ํ†ต๊ณผ (0.01ms, 10.3MB)
ํ…Œ์ŠคํŠธ 12 ใ€‰	ํ†ต๊ณผ (0.03ms, 10.2MB)
ํ…Œ์ŠคํŠธ 13 ใ€‰	ํ†ต๊ณผ (0.06ms, 10MB)
ํ…Œ์ŠคํŠธ 14 ใ€‰	ํ†ต๊ณผ (0.47ms, 9.99MB)
ํ…Œ์ŠคํŠธ 15 ใ€‰	ํ†ต๊ณผ (1.25ms, 10.1MB)
ํ…Œ์ŠคํŠธ 16 ใ€‰	ํ†ต๊ณผ (0.80ms, 10.2MB)
ํ…Œ์ŠคํŠธ 17 ใ€‰	ํ†ต๊ณผ (0.85ms, 10.2MB)
ํ…Œ์ŠคํŠธ 18 ใ€‰	ํ†ต๊ณผ (0.02ms, 10.3MB)
ํ…Œ์ŠคํŠธ 19 ใ€‰	ํ†ต๊ณผ (0.05ms, 10.1MB)
ํ…Œ์ŠคํŠธ 20 ใ€‰	ํ†ต๊ณผ (0.09ms, 10.2MB)
ํ…Œ์ŠคํŠธ 21 ใ€‰	ํ†ต๊ณผ (0.46ms, 10.1MB)
ํ…Œ์ŠคํŠธ 22 ใ€‰	ํ†ต๊ณผ (1.13ms, 10MB)
ํ…Œ์ŠคํŠธ 23 ใ€‰	ํ†ต๊ณผ (0.91ms, 10.3MB)
ํ…Œ์ŠคํŠธ 24 ใ€‰	ํ†ต๊ณผ (1.08ms, 10.3MB)
ํ…Œ์ŠคํŠธ 25 ใ€‰	ํ†ต๊ณผ (0.01ms, 10.2MB)
ํšจ์œจ์„ฑ  ํ…Œ์ŠคํŠธ
ํ…Œ์ŠคํŠธ 1 ใ€‰	ํ†ต๊ณผ (251.37ms, 18.6MB)
ํ…Œ์ŠคํŠธ 2 ใ€‰	ํ†ต๊ณผ (320.59ms, 18.6MB)
ํ…Œ์ŠคํŠธ 3 ใ€‰	ํ†ต๊ณผ (347.97ms, 18.6MB)
ํ…Œ์ŠคํŠธ 4 ใ€‰	ํ†ต๊ณผ (176.48ms, 18.5MB)
ํ…Œ์ŠคํŠธ 5 ใ€‰	ํ†ต๊ณผ (211.01ms, 18.5MB)
ํ…Œ์ŠคํŠธ 6 ใ€‰	ํ†ต๊ณผ (238.14ms, 18.5MB)
ํ…Œ์ŠคํŠธ 7 ใ€‰	ํ†ต๊ณผ (340.32ms, 18.6MB)
ํ…Œ์ŠคํŠธ 8 ใ€‰	ํ†ต๊ณผ (398.81ms, 18.6MB)
ํ…Œ์ŠคํŠธ 9 ใ€‰	ํ†ต๊ณผ (388.43ms, 18.6MB)
ํ…Œ์ŠคํŠธ 10 ใ€‰	ํ†ต๊ณผ (351.45ms, 18.6MB)
ํ…Œ์ŠคํŠธ 11 ใ€‰	ํ†ต๊ณผ (361.99ms, 18.6MB)
ํ…Œ์ŠคํŠธ 12 ใ€‰	ํ†ต๊ณผ (348.21ms, 18.5MB)
ํ…Œ์ŠคํŠธ 13 ใ€‰	ํ†ต๊ณผ (281.42ms, 18.5MB)
ํ…Œ์ŠคํŠธ 14 ใ€‰	ํ†ต๊ณผ (203.89ms, 18.6MB)
  • ํž™ํ๋ฅผ ์ผ๋„ค? ์ง€๋ ธ๋‹ค.
import heapq

def solution(stones, k):

    heap = []
    for i in range(k):
        #๊ตฌ๊ฐ„ํ•ฉ์˜ ์ตœ๋Œ“๊ฐ’์„ ๊ณ„์† ์œ ์ง€ํ•ด์•ผํ•ด์„œ -๋กœ ์ง‘์–ด๋„ฃ์–ด์•ผํ•จ
        heapq.heappush(heap, [-stones[i],i])

    answer = 10**9
    i = k - 1
    while i < len(stones):
        heapq.heappush(heap,[-stones[i],i])

        while heap[0][1] < i - k + 1:
            heapq.heappop(heap)
        i += 1
        answer = min(answer, -heap[0][0])

    return answer
    
์ •ํ™•์„ฑ  ํ…Œ์ŠคํŠธ
ํ…Œ์ŠคํŠธ 1 ใ€‰	ํ†ต๊ณผ (0.00ms, 10.1MB)
ํ…Œ์ŠคํŠธ 2 ใ€‰	ํ†ต๊ณผ (0.01ms, 10.1MB)
ํ…Œ์ŠคํŠธ 3 ใ€‰	ํ†ต๊ณผ (0.02ms, 9.99MB)
ํ…Œ์ŠคํŠธ 4 ใ€‰	ํ†ต๊ณผ (0.06ms, 10.3MB)
ํ…Œ์ŠคํŠธ 5 ใ€‰	ํ†ต๊ณผ (0.14ms, 10.1MB)
ํ…Œ์ŠคํŠธ 6 ใ€‰	ํ†ต๊ณผ (0.72ms, 10.3MB)
ํ…Œ์ŠคํŠธ 7 ใ€‰	ํ†ต๊ณผ (0.76ms, 10.2MB)
ํ…Œ์ŠคํŠธ 8 ใ€‰	ํ†ต๊ณผ (0.70ms, 10.1MB)
ํ…Œ์ŠคํŠธ 9 ใ€‰	ํ†ต๊ณผ (1.03ms, 10.2MB)
ํ…Œ์ŠคํŠธ 10 ใ€‰	ํ†ต๊ณผ (0.16ms, 10.3MB)
ํ…Œ์ŠคํŠธ 11 ใ€‰	ํ†ต๊ณผ (0.02ms, 10.2MB)
ํ…Œ์ŠคํŠธ 12 ใ€‰	ํ†ต๊ณผ (0.04ms, 9.93MB)
ํ…Œ์ŠคํŠธ 13 ใ€‰	ํ†ต๊ณผ (0.08ms, 10.1MB)
ํ…Œ์ŠคํŠธ 14 ใ€‰	ํ†ต๊ณผ (0.38ms, 10.2MB)
ํ…Œ์ŠคํŠธ 15 ใ€‰	ํ†ต๊ณผ (0.82ms, 10.2MB)
ํ…Œ์ŠคํŠธ 16 ใ€‰	ํ†ต๊ณผ (1.20ms, 10.3MB)
ํ…Œ์ŠคํŠธ 17 ใ€‰	ํ†ต๊ณผ (1.20ms, 10.3MB)
ํ…Œ์ŠคํŠธ 18 ใ€‰	ํ†ต๊ณผ (0.02ms, 10.1MB)
ํ…Œ์ŠคํŠธ 19 ใ€‰	ํ†ต๊ณผ (0.07ms, 10.4MB)
ํ…Œ์ŠคํŠธ 20 ใ€‰	ํ†ต๊ณผ (0.12ms, 10.1MB)
ํ…Œ์ŠคํŠธ 21 ใ€‰	ํ†ต๊ณผ (0.77ms, 10.2MB)
ํ…Œ์ŠคํŠธ 22 ใ€‰	ํ†ต๊ณผ (0.93ms, 10.2MB)
ํ…Œ์ŠคํŠธ 23 ใ€‰	ํ†ต๊ณผ (0.85ms, 10.2MB)
ํ…Œ์ŠคํŠธ 24 ใ€‰	ํ†ต๊ณผ (0.93ms, 10.4MB)
ํ…Œ์ŠคํŠธ 25 ใ€‰	ํ†ต๊ณผ (0.03ms, 10.1MB)
ํšจ์œจ์„ฑ  ํ…Œ์ŠคํŠธ
ํ…Œ์ŠคํŠธ 1 ใ€‰	ํ†ต๊ณผ (172.78ms, 48.6MB)
ํ…Œ์ŠคํŠธ 2 ใ€‰	ํ†ต๊ณผ (172.36ms, 48.7MB)
ํ…Œ์ŠคํŠธ 3 ใ€‰	ํ†ต๊ณผ (185.38ms, 48.7MB)
ํ…Œ์ŠคํŠธ 4 ใ€‰	ํ†ต๊ณผ (337.15ms, 22.9MB)
ํ…Œ์ŠคํŠธ 5 ใ€‰	ํ†ต๊ณผ (359.72ms, 25.2MB)
ํ…Œ์ŠคํŠธ 6 ใ€‰	ํ†ต๊ณผ (307.15ms, 24MB)
ํ…Œ์ŠคํŠธ 7 ใ€‰	ํ†ต๊ณผ (163.12ms, 48.6MB)
ํ…Œ์ŠคํŠธ 8 ใ€‰	ํ†ต๊ณผ (144.67ms, 48.6MB)
ํ…Œ์ŠคํŠธ 9 ใ€‰	ํ†ต๊ณผ (164.22ms, 48.5MB)
ํ…Œ์ŠคํŠธ 10 ใ€‰	ํ†ต๊ณผ (148.15ms, 48.6MB)
ํ…Œ์ŠคํŠธ 11 ใ€‰	ํ†ต๊ณผ (146.11ms, 48.6MB)
ํ…Œ์ŠคํŠธ 12 ใ€‰	ํ†ต๊ณผ (146.51ms, 48.6MB)
ํ…Œ์ŠคํŠธ 13 ใ€‰	ํ†ต๊ณผ (297.41ms, 24.9MB)
ํ…Œ์ŠคํŠธ 14 ใ€‰	ํ†ต๊ณผ (220.32ms, 48.6MB)
  • ์™€... ๋”•์…”๋„ˆ๋ฆฌ๋„ ๋˜๋Š” ๊ฑฐ์˜€๋„ค. ๋‚ด๊ฐ€ ๋ฉ์ฒญํ–ˆ๋˜ ๊ฑธ๋กœ
def solution(stones, k):

    nums_pos = dict()
    for pos, stone in enumerate(stones):
        if stone not in nums_pos:
            nums_pos[stone] = []
        nums_pos[stone].append(pos + 1)
    dist = [[1, i - 1, i + 1] for i in range(len(stones) + 2)]

    ans = 0
    for num in sorted(nums_pos):
        ans = num            
        for cur in nums_pos[num]:
            d, prev, next = dist[cur]
            dist[prev][0] += d
            dist[prev][2], dist[next][1] = next, prev
            if dist[prev][0] > k:
                return ans

    return ans
    
์ •ํ™•์„ฑ  ํ…Œ์ŠคํŠธ
ํ…Œ์ŠคํŠธ 1 ใ€‰	ํ†ต๊ณผ (0.01ms, 10.1MB)
ํ…Œ์ŠคํŠธ 2 ใ€‰	ํ†ต๊ณผ (0.01ms, 10.2MB)
ํ…Œ์ŠคํŠธ 3 ใ€‰	ํ†ต๊ณผ (0.02ms, 10.1MB)
ํ…Œ์ŠคํŠธ 4 ใ€‰	ํ†ต๊ณผ (0.03ms, 10.1MB)
ํ…Œ์ŠคํŠธ 5 ใ€‰	ํ†ต๊ณผ (0.04ms, 10.2MB)
ํ…Œ์ŠคํŠธ 6 ใ€‰	ํ†ต๊ณผ (0.56ms, 10.1MB)
ํ…Œ์ŠคํŠธ 7 ใ€‰	ํ†ต๊ณผ (1.28ms, 10.2MB)
ํ…Œ์ŠคํŠธ 8 ใ€‰	ํ†ต๊ณผ (1.34ms, 10.3MB)
ํ…Œ์ŠคํŠธ 9 ใ€‰	ํ†ต๊ณผ (0.79ms, 10.1MB)
ํ…Œ์ŠคํŠธ 10 ใ€‰	ํ†ต๊ณผ (0.04ms, 10.2MB)
ํ…Œ์ŠคํŠธ 11 ใ€‰	ํ†ต๊ณผ (0.02ms, 10.1MB)
ํ…Œ์ŠคํŠธ 12 ใ€‰	ํ†ต๊ณผ (0.05ms, 10.2MB)
ํ…Œ์ŠคํŠธ 13 ใ€‰	ํ†ต๊ณผ (0.06ms, 10.1MB)
ํ…Œ์ŠคํŠธ 14 ใ€‰	ํ†ต๊ณผ (0.35ms, 10.3MB)
ํ…Œ์ŠคํŠธ 15 ใ€‰	ํ†ต๊ณผ (0.83ms, 10.3MB)
ํ…Œ์ŠคํŠธ 16 ใ€‰	ํ†ต๊ณผ (0.87ms, 10.3MB)
ํ…Œ์ŠคํŠธ 17 ใ€‰	ํ†ต๊ณผ (1.58ms, 10.3MB)
ํ…Œ์ŠคํŠธ 18 ใ€‰	ํ†ต๊ณผ (0.02ms, 10.1MB)
ํ…Œ์ŠคํŠธ 19 ใ€‰	ํ†ต๊ณผ (0.03ms, 10.2MB)
ํ…Œ์ŠคํŠธ 20 ใ€‰	ํ†ต๊ณผ (0.06ms, 10.2MB)
ํ…Œ์ŠคํŠธ 21 ใ€‰	ํ†ต๊ณผ (0.31ms, 10.3MB)
ํ…Œ์ŠคํŠธ 22 ใ€‰	ํ†ต๊ณผ (0.70ms, 10.2MB)
ํ…Œ์ŠคํŠธ 23 ใ€‰	ํ†ต๊ณผ (0.76ms, 10.3MB)
ํ…Œ์ŠคํŠธ 24 ใ€‰	ํ†ต๊ณผ (0.79ms, 10.3MB)
ํ…Œ์ŠคํŠธ 25 ใ€‰	ํ†ต๊ณผ (0.03ms, 10MB)
ํšจ์œจ์„ฑ  ํ…Œ์ŠคํŠธ
ํ…Œ์ŠคํŠธ 1 ใ€‰	ํ†ต๊ณผ (505.87ms, 87.1MB)
ํ…Œ์ŠคํŠธ 2 ใ€‰	ํ†ต๊ณผ (555.50ms, 87.1MB)
ํ…Œ์ŠคํŠธ 3 ใ€‰	ํ†ต๊ณผ (472.18ms, 75.4MB)
ํ…Œ์ŠคํŠธ 4 ใ€‰	ํ†ต๊ณผ (209.26ms, 75.5MB)
ํ…Œ์ŠคํŠธ 5 ใ€‰	ํ†ต๊ณผ (243.16ms, 75.4MB)
ํ…Œ์ŠคํŠธ 6 ใ€‰	ํ†ต๊ณผ (230.21ms, 75.6MB)
ํ…Œ์ŠคํŠธ 7 ใ€‰	ํ†ต๊ณผ (544.13ms, 87.1MB)
ํ…Œ์ŠคํŠธ 8 ใ€‰	ํ†ต๊ณผ (510.48ms, 87.2MB)
ํ…Œ์ŠคํŠธ 9 ใ€‰	ํ†ต๊ณผ (499.16ms, 87.1MB)
ํ…Œ์ŠคํŠธ 10 ใ€‰	ํ†ต๊ณผ (451.80ms, 87.1MB)
ํ…Œ์ŠคํŠธ 11 ใ€‰	ํ†ต๊ณผ (420.42ms, 74.2MB)
ํ…Œ์ŠคํŠธ 12 ใ€‰	ํ†ต๊ณผ (356.15ms, 73.2MB)
ํ…Œ์ŠคํŠธ 13 ใ€‰	ํ†ต๊ณผ (192.78ms, 86.2MB)
ํ…Œ์ŠคํŠธ 14 ใ€‰	ํ†ต๊ณผ (214.57ms, 86.3MB)
728x90
๋ฐ˜์‘ํ˜•