๐Ÿ‘ฉโ€๐ŸŽ“๊ณต๋ถ€ - 2024.02.21 ์ฝ”๋”ฉ ๋ฌธ์ œํ’€์ด

์œ ๋ น๊ฐœยท2024๋…„ 2์›” 23์ผ
0

PS-์•Œ๊ณ ๋ฆฌ์ฆ˜2

๋ชฉ๋ก ๋ณด๊ธฐ
34/34
post-thumbnail

์†Œ๋งˆ ๊ตฌํ˜„์ชฝ์— ํˆฌํฌ์ธํ„ฐ ๋‚˜์™”๋‹ค๋Š” ์†Œ๋ฆฌ๊ฐ€ ์žˆ์–ด ์–ด์ œ ํ•˜๋ฃจ์ข…์ผ ํˆฌํฌ์ธํ„ฐ ๊ณต๋ถ€ํ•˜๋Š๋ผ ๊ฒŒ์‹œ๊ธ€์„ ๋ชป์˜ฌ๋ ธ์Šต๋‹ˆ๋‹ค ใ…œใ…œ...
ํ•˜์ง€๋งŒ ํฐ ์ˆ˜ํ™•์ด ์žˆ์—ˆ์œผ๋‹ˆ...๋ฐ”๋กœ ๊ณจ๋“œ4 ํˆฌํฌ์ธํ„ฐ ๋ฌธ์ œ๋ฅผ ์ž๋ ฅ์†” ํ–ˆ์Šต๋‹ˆ๋‹ค!

1806๋ฒˆ - ๋ถ€๋ถ„ํ•ฉ

์ˆ˜์—ด์ด ์ฃผ์–ด์ง€๋ฉด S๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™์€ ๋ถ€๋ถ„์ˆ˜์—ด์˜ ํ•ฉ ์ค‘์—์„œ ๊ฐ€์žฅ ํฌ๊ธฐ๊ฐ€ ์ž‘์€ ๋ถ€๋ถ„์ˆ˜์—ด์„ ๊ตฌํ•˜๋ฉด ๋˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.


๋ถ„์„


์ผ๋‹จ ์œ„ ๋ฌธ์ œ์— ๋‚˜์˜จ ์ˆ˜์—ด์„ ๊ทธ๋Œ€๋กœ ๊ฐ€์ ธ์™”์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ํˆฌํฌ์ธํ„ฐ ๊ฐœ๋…์„ ์ ์šฉํ• ๊ฒ๋‹ˆ๋‹ค.

lst.popleft()๋ฅผ ํ†ตํ•ด ๊ฐ’์˜ ํ•ฉ์ด 15๊ฐ€ ๋˜๊ธฐ ์ „๊นŒ์ง€ ์›์†Œ๋ฅผ ๊ณ„์† ๊ธ์–ด์˜ต์‹œ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ๊ธ์–ด์˜ค๋‹ค ๋ณด๋‹ˆ ๊ฐ’์˜ ํ•ฉ์ด 15๋ฅผ ๋„˜์€ 24๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค!
์ด๋Ÿฌ๋ฉด ์กฐ๊ฑด์— ๋งŒ์กฑํ•˜๋Š” ๋ถ€๋ถ„์ˆ˜์—ด์ด๋‹ˆ ํ•ด๋‹น ๋ถ€๋ถ„์ˆ˜์—ด์˜ ํฌ๊ธฐ๋ฅผ ๋”ฐ๋กœ ๊ธฐ๋กํ•˜๊ณ 
์ตœ์ข…์ ์ธ ๋ชฉ์ ์€ 15๊ฐ€ ๋„˜๋Š” ์ œ์ผ ์ž‘์€ ํฌ๊ธฐ์˜ ๋ถ€๋ถ„์ˆ˜์—ด์ด๋‹ˆ quene๋ฅผ popํ•ด์„œ ์ตœ๋Œ€ํ•œ ํฌ๊ธฐ๋ฅผ ์ค„์—ฌ๋ด…์‹œ๋‹ค.

5๋ฅผ popleftํ•ด๋„ 19๊ฐ€ ๋˜๋ฏ€๋กœ ์ด ์ˆ˜์—ด ํฌ๊ธฐ(4)๋˜ํ•œ ๋”ฐ๋กœ ๊ธฐ๋กํ•ด๋‘๊ณ  ๋” ๋นผ๋ด…์‹œ๋‹ค.

1์„ popleftํ•ด๋„, 3์„ popleftํ•ด๋„ 15๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™์œผ๋ฏ€๋กœ ๋ถ€๋ถ„์ˆ˜์—ด์˜ ํฌ๊ธฐ๋ฅผ ๋”ฐ๋กœ ๊ธฐ๋กํ•ด๋‘๊ณ  ๋” ๋บด๋ด…์‹œ๋‹ค.

๋“œ๋””์–ด 10๋งŒ ๋‚จ๊ฒŒ๋˜์–ด ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ์ด์ œ ์œ—๋ถ€๋ถ„์œผ๋กœ ๋‹ค์‹œ ๋Œ์•„๊ฐ€์„œ ํ•ฉ์‚ฐ 15์ด์ƒ์ด ๋ ๋•Œ๊นŒ์ง€ lst์—์„œ ์›์†Œ๋ฅผ ๋‹ค์‹œ ๊ธ์–ด์˜ต์‹œ๋‹ค.

ํˆฌํฌ์ธํ„ฐ๋ž€ ์ด์ฒ˜๋Ÿผ ์‹œ์ž‘์ ๊ณผ ๋์ ์„ ์žก๊ณ  ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜์ง€ ๋ชปํ•˜๋ฉด ๋์ ์„ ๋Š˜๋ฆฌ๊ณ  ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋ฉด ์‹œ์ž‘์ ์„ ๋นผ๋Š” ํ˜•์‹์˜, ์ด์ค‘ for๋ฌธ์œผ๋กœ O(N^2)์— ์ฒ˜๋ฆฌ๋˜๋Š” ์ž‘์—…์„ 2๊ฐœ์˜ ํฌ์ธํ„ฐ์˜ ์›€์ง์ž„์œผ๋กœ O(N)์— ํ•ด๊ฒฐํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค.

์ถœ๋ ฅ๊ฐ’์„ ํ†ตํ•ด ๊ณผ์ •์„ ์‚ดํŽด๋ณด๋ฉด ์œ„์™€ ๊ฐ™์€ ๋Š๋‚Œ์ž…๋‹ˆ๋‹ค.


์ฝ”๋”ฉ

์œ„ ๊ณผ์ •์„ ์ฝ”๋”ฉํ•ด๋ด…์‹œ๋‹ค.

from collections import deque
import sys

input = sys.stdin.readline

ํ•ด๋‹น ๋ฌธ์ œ๋Š” ์‹œ๊ฐ„์ œํ•œ์ด 0.5์ดˆ๋กœ ๋งค์šฐ ๊ธ‰๋ฐ•ํ•˜๋ฏ€๋กœ sysinput์„ ์‚ฌ์šฉํ•ด์ค๋‹ˆ๋‹ค.

N,S = map(int,input().split())
lst = deque(list(map(int,input().split())))

๋ฐฐ์—ด์˜ ํฌ๊ธฐ, ํ•ฉ์‚ฐ ์กฐ๊ฑด, lst๋“ฑ์„ ๋ฐ›์•„์ฃผ๊ณ 

quene = deque([lst[0]])

ํˆฌํฌ์ธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•  que๋ฅผ ํ•˜๋‚˜ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค.

    cum_sum = lst[0]
    lst.popleft()
    min = 100000001

ํ•œ๊ฐ€์ง€ ์ฃผ์˜ํ•  ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ถ€๋ถ„๋ฐฐ์—ด์˜ ํ•ฉ์‚ฐ๊ฐ’์„ ๊ตฌํ• ๋•Œ sum(๋ถ€๋ถ„๋ฐฐ์—ด)์„ ํ•˜๊ฒŒ๋˜๋ฉด sum ํ•จ์ˆ˜๋ฅผ 100000๋ฒˆ ๊ฐ€๊นŒ์ด ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์‹œ๊ฐ„์ œํ•œ์— ๊ฑฐ๋ฆด ํ™•๋ฅ ์ด ๊ต‰ใ…ก์žฅํžˆ ๋†’์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ˆ„์ ํ•ฉ์„ cum_sum์„ ํ†ตํ•ด ๋”ฐ๋กœ ๊ธฐ์žฌํ•ด์ฃผ๊ฒ ์Šต๋‹ˆ๋‹ค.

    while True:
        try:
            if cum_sum < S:
                tmp1 = lst.popleft()
                cum_sum += tmp1
                quene.append(tmp1)

๋งŒ์•ฝ ๋ถ€๋ถ„์ˆ˜์—ด์˜ ํ•ฉ์ด ์œ„ ์˜ˆ์‹œ์—์„œ ๋ดค๋˜ ๊ฒƒ์ฒ˜๋Ÿผ 15๋ณด๋‹ค ์ž‘์•„ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜์ง€ ๋ชปํ•œ๋‹ค๋ฉด lst์—์„œ ์›์†Œ๋ฅผ ๊ธ์–ด์™€ quene์— ์ถ”๊ฐ€ํ•ด์ค์‹œ๋‹ค.

            else:
                if len(quene) < min:
                    min = len(quene) 
                tmp2 = quene.popleft()
                cum_sum -= tmp2

๋งŒ์•ฝ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•œ๋‹ค๋ฉด ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” quene์˜ ๊ธธ์ด ์ค‘์—์„œ ์ œ์ผ ์ž‘์ธ ๊ธธ์ด๋ฅผ quene์— ๋„ฃ์–ด์ฃผ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

        except:
            break

quene์„ ๋‹ค์จ์„œ ์˜ˆ์™ธ๊ฐ€ ๋‚  ๊ฒฝ์šฐ์—” break์œผ๋กœ ์ฒ˜๋ฆฌํ•ด์ฃผ๊ณ 

print(min)

๋งˆ์ง€๋ง‰์œผ๋กœ min์„ ์ถœ๋ ฅํ•˜๋ฉด ๋๋‚  ๊ฒƒ ๊ฐ™์ง€๋งŒ

๊ณจ๋“œ์˜ ๋ฒฝ์€ ๊ทธ๋ ‡๊ฒŒ ํ˜ธ๋ฝํ˜ธ๋ฝํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค...


๋ฐ˜๋ก€

๋กœ์ง์ด ์˜ฌ๋ฐ”๋ฅธ๋ฐ ํ‹€๋ฆฌ๊ฒŒ ๋‚˜์˜จ๋‹ค๋ฉด ํ•ญ์ƒ ๋ฐ˜๋ก€๋ฅผ ์ƒ๊ฐํ•ด๋ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  1. ํ…Œ์ŠคํŠธ์ผ€์ด์Šค๊ฐ€ 10/10/11113211111 ์ผ๋•Œ

ํ•œ ๊ฐ€์ง€ ์ˆซ์ž๊ฐ€ ์กฐ๊ฑด S๋ฅผ ๋งŒ์กฑ์‹œํ‚ฌ๋งŒํผ S๋ณด๋‹ค ํฌ๊ฒŒ ๋‚˜์™€๋ฒ„๋ฆฐ๋‹ค๋ฉด ๋‹ต์€ ๋ฌด์กฐ๊ฑด 1์ด ๋ฉ๋‹ˆ๋‹ค.

  1. min์ด ์ œ ์—ญํ• ์„ ๋ชปํ•ด์„œ ๊ทธ๋Œ€๋กœ ๋‚˜์™€๋ฒ„๋ฆด ๊ฒฝ์šฐ

๋งŒ์•ฝ์— ๋ญ˜ ํ•ด๋„ ํ•ฉ์‚ฐ S๊ฐ€ ๋งŒ์กฑ๋˜์ง€ ์•Š๋Š”๋‹ค๋ฉด

            else:
                if len(quene) < min:
                    min = len(quene) 
                tmp2 = quene.popleft()
                cum_sum -= tmp2

๊ตฌ๋ฌธ ์ž์ฒด๊ฐ€ ์‹คํ–‰๋˜์ง€ ์•Š์•„ ์ตœ์†Ÿ๊ฐ’์„ ๊ตฌํ•˜๋ ค๊ณ  ๋‘” min๊ฐ’์ด ์ดˆ๊ธฐ๊ฐ’ 100000001๋กœ ๊ทธ๋Œ€๋กœ ์œ ์ง€๋˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
์ด ๋‘ ๊ฒฝ์šฐ๋ฅผ ๊ณ ์ณ๋ด…์‹œ๋‹ค.


for values in lst:
    if values >= S:
        boolean = True
if boolean == True:
    print(1)
else:

ํˆฌํฌ์ธํ„ฐ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰์‹œํ‚ค๊ธฐ ์ „์— ์›์†Œ๋“ค์„ ๋‹ค ๊ฒ€์‚ฌํ•ด์„œ S๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™์€ ์›์†Œ๊ฐ€ ์žˆ์œผ๋ฉด 1์„ ์ถœ๋ ฅํ•ด์ค์‹œ๋‹ค.

    if min >= 100000001:
        print(0)
    else:
        print(min)

min๊ฐ’์ด ์ดˆ๊ธฐํ™”๊ฐ’ ๊ทธ๋Œ€๋กœ ๋‚˜์™€๋ฒ„๋ฆฐ๋‹ค๋ฉด S์กฐ๊ฑด์„ ์•„์˜ˆ ๋งŒ์กฑ์‹œํ‚ค์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ์ด๋ฏ€๋กœ 0์„ ์ถœ๋ ฅํ•ฉ์‹œ๋‹ค.


์ „์ฒด์ฝ”๋“œ

from collections import deque
import sys

input = sys.stdin.readline
N,S = map(int,input().split())
lst = deque(list(map(int,input().split())))
quene = deque([lst[0]])
sum_list = sum(lst)
boolean = False
for values in lst:
    if values >= S:
        boolean = True
if boolean == True:
    print(1)
else:
    cum_sum = lst[0]
    lst.popleft()
    min = 100000001

    while True:
        try:
            if cum_sum < S:
                tmp1 = lst.popleft()
                cum_sum += tmp1
                quene.append(tmp1)
            else:
                if len(quene) < min:
                    min = len(quene) 
                tmp2 = quene.popleft()
                cum_sum -= tmp2
        except:
            break

    if min >= 100000001:
        print(0)
    else:
        print(min)



profile
ํ•œ๋ฆผ๋Œ€ํ•™๊ต ์ •๋ณด๊ณผํ•™๋Œ€ 2ํ•™๋…„ ์žฌํ•™์ค‘ / ์œก๊ตฐ ์ •๋ณด๋ณดํ˜ธ๋ณ‘ 22-2๊ธฐ

0๊ฐœ์˜ ๋Œ“๊ธ€