ABOUT ME

์•ˆ๋…•ํ•˜์„ธ์š”.

Today
Yesterday
Total
  • [๋ฐฑ์ค€] 10025 ๊ฒŒ์œผ๋ฅธ ๋ฐฑ๊ณฐ with Python
    PS 2023. 4. 10. 14:07
    728x90
    ๋ฐ˜์‘ํ˜•

    ๐Ÿ“Œ BOJ 10025 ๊ฒŒ์œผ๋ฅธ ๋ฐฑ๊ณฐ

    ๐Ÿ’ก ์กฐ๊ฑด

    1. ์•จ๋ฒ„ํŠธ๊ฐ€ ๊ฐ€์žฅ ์ ์€ ๊ฑฐ๋ฆฌ๋งŒ ์›€์ง์ด๊ณ ๋„ ์ตœ๋Œ€ํ•œ ๋งŽ์€ ์–ผ์Œ์œผ๋กœ ๋”์œ„๋ฅผ ์‹ํž ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ์ž.

    2. ์šฐ๋ฆฌ ์•ˆ์€ 1์ฐจ์› ๋ฐฐ์—ด๋กœ ์ƒ๊ฐํ•˜๋ฉฐ, ์ด N๊ฐœ์˜ ์–ผ์Œ ์–‘๋™์ด๋“ค์ด xi์ขŒํ‘œ๋งˆ๋‹ค ๋†“์—ฌ ์žˆ๊ณ  ๊ฐ ์–‘๋™์ด ์•ˆ์—๋Š” gi์”ฉ์˜ ์–ผ์Œ์ด ๋“ค์–ด ์žˆ๋‹ค.
      (1 โ‰ค N โ‰ค 100000)
      (0 โ‰ค xi โ‰ค 1,000,000)
      (1 โ‰ค gi โ‰ค 10,000)

    3. ์•จ๋ฒ„ํŠธ๊ฐ€ ์ž๋ฆฌ๋ฅผ ์žก์œผ๋ฉด ๊ทธ๋กœ๋ถ€ํ„ฐ ์ขŒ์šฐ๋กœ K(1 โ‰ค K โ‰ค 2,000,000) ๋งŒํผ ๋–จ์–ด์ง„ ์–‘๋™์ด๊นŒ์ง€ ๋‹ฟ์„ ์ˆ˜ ์žˆ๋‹ค.
      ์•จ๋ฒ„ํŠธ๋Š” ์–‘๋™์ด๊ฐ€ ๋†“์—ฌ ์žˆ๋Š” ์ž๋ฆฌ์—๋„ ์ž๋ฆฌ์žก์„ ์ˆ˜ ์žˆ๋‹ค.
      ๋ชจ๋“  ์–ผ์Œ ์–‘๋™์ด์˜ ์œ„์น˜๋Š” ๋‹ค๋ฅด๋‹ค.

    4. ์•จ๋ฒ„ํŠธ๊ฐ€ ์ตœ์ ์˜ ์ž๋ฆฌ๋ฅผ ๊ณจ๋ž์„ ๋•Œ ์–ผ์Œ์˜ ํ•ฉ์„ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ. ์ฆ‰, ์–ผ์Œ๋“ค์˜ ํ•ฉ์˜ ์ตœ๋Œ“๊ฐ’์„ ๊ตฌํ•ด์•ผ ํ•œ๋‹ค.

    5. ์ฒซ ์ค„์— ์ •์ˆ˜ N๊ณผ K๊ฐ€ ๋“ค์–ด์˜จ๋‹ค.
      ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ N์งธ ์ค„๊นŒ์ง€, ๊ณต๋ฐฑ์„ ์‚ฌ์ด์— ๋‘๊ณ  ๊ฐ ์–‘๋™์ด์˜ ์–ผ์Œ์˜ ์–‘์„ ๋‚˜ํƒ€๋‚ด๋Š” gi์™€ ์–‘๋™์ด์˜ ์ขŒํ‘œ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” xi๊ฐ€ ์ฃผ์–ด์ง„๋‹ค.

    6. ๋ˆ„์ ํ•ฉ, ์Šฌ๋ผ์ด๋”ฉ ์œˆ๋„์šฐ ์œ ํ˜•์˜ ๋ฌธ์ œ

    ๐Ÿ”– ์˜ˆ์ œ ๋ฐ ์‹คํ–‰๊ฒฐ๊ณผ

    ์˜ˆ์ œ 1

    4 3
    4 7
    10 15
    2 2
    5 1

    ์‹คํ–‰๊ฒฐ๊ณผ 1

    11

    โŒจ๏ธ ๋ฌธ์ œ ํ’€์ด

    1. ์ด ๋ฌธ์ œ๋Š” ๋‘ ๊ฐ€์ง€ ํ’€์ด๋ฅผ ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ๋‚˜๋Š” ์Šฌ๋ผ์ด๋”ฉ ์œˆ๋„์šฐ๋กœ ํ’€์ดํ–ˆ๋‹ค.

    2. ๋ˆ„์ ํ•ฉ ํ’€์ด๋Š” ์•„๋ž˜์˜ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ•˜๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค.
      10025 ๋ˆ„์ ํ•ฉ ํ’€์ด

    3. ์Šฌ๋ผ์ด๋”ฉ ์œˆ๋„์šฐ๋กœ ๋ฌธ์ œ๋ฅผ ํ’€์ดํ•˜๊ธฐ ์œ„ํ•ด์„œ ์–ผ์Œ์–‘๋™์ด๋“ค์ด ๋†“์—ฌ์งˆ ๋ฐฐ์—ด์„ ๋งŒ๋“ค์–ด์ค€๋‹ค.
      1,000,000 ๊ฐœ์˜ ๋ฐฐ์—ด์„ ๋งŒ๋“ค์–ด๋‘๊ณ , N๊ฐœ์˜ ์–ผ์Œ์–‘๋™์ด๋ฅผ X์˜ ์œ„์น˜์— G๋ฅผ ์ €์žฅํ•œ๋‹ค.

    4. (3)๋ฒˆ์„ ์ง„ํ–‰ํ•˜๋ฉด์„œ, ๋ถˆํ•„์š”ํ•œ ์—ฐ์‚ฐ์„ ์ค„์ด๊ธฐ ์œ„ํ•ด ์–‘๋™์ด๊ฐ€ ๋†“์—ฌ์ง„ ๋งจ ๋‚˜์ค‘ ์ขŒํ‘œ๋ฅผ ๊ตฌํ•œ๋‹ค.

    1. ํ˜„์žฌ ์œ„์น˜๋กœ๋ถ€ํ„ฐ ์ขŒ์šฐ๋กœ K ๋งŒํผ ๋‹ฟ์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— 0 ์ขŒํ‘œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์‹ ๋‹ค์Œ ์œ„์น˜๋ฅผ ๊ณ„์‚ฐํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค.
      p = k * 2 + 1

    2. ์–ผ์Œ๋“ค์˜ ์ตœ๋Œ€๊ฐ’์„ ์ €์žฅํ•  res ์˜ ์ดˆ๊ธฐ๊ฐ’์€ 0~p ๊นŒ์ง€์˜ ๊ฐ’์ด๊ณ , (3)์—์„œ ๊ตฌํ•œ ๋งจ ๋‚˜์ค‘ ์ขŒํ‘œ๊นŒ์ง€ ์ˆœํšŒํ•˜๋ฉด์„œ res์˜ ๊ฐ’์„
      ๊ฐฑ์‹ ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

    ๐Ÿ–ฅ ์†Œ์Šค ์ฝ”๋“œ

    from sys import stdin
    
    n, k = map(int, stdin.readline().split())
    length, ans = 0, 0
    arr = [0 for _ in range(10000001)]
    
    for _ in range(n):
        g, x = map(int, stdin.readline().split())
        length = max(length, x)
        arr[x] = g
    
    p = k * 2 + 1
    res = sum(arr[:p])
    ans = res
    
    for i in range(p, length + 1):
        # ์—ฌ๊ธฐ p ๊ฐ’ ์•ˆ๋„ฃ๊ณ  ์ˆ˜์‹ ๋„ฃ์„ ๋–„ ๊ด„ํ˜ธ ์•ˆ ๋„ฃ์–ด์„œ ํ‹€๋ ธ์Œ
        res += (arr[i] - arr[i - p])
        ans = max(ans, res)
    
    print(ans)
    ๋ฐ˜์‘ํ˜•

    ๋Œ“๊ธ€

Designed by Tistory.