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

728x90

๐Ÿšฉ ์ž๋ฃŒ๊ตฌ์กฐ, ๋ฌธ์ž์—ด, ํŒŒ์‹ฑ, ๋ฑ

 

thinking

0 ≤ p ≤ 100,000 , 0 ≤ n ≤ 100,000 ์ด๋ผ ๋ฆฌํ„ฐ๋Ÿด๋ฆฌ ์—ฐ์‚ฐํ•˜๋ฉด ์‹œ๊ฐ„์ดˆ๊ณผ ๋‚ ๊ฑฐ ๊ฐ™์•„์„œ ๊ทœ์น™์„ ์ฐพ์•„๋ดค๋‹ค.

- R์ด ์—ฐ์†ํ•ด์„œ ํ™€์ˆ˜๊ฐœ๋ฉด ๋’ค์ง‘๊ณ , ์ง์ˆ˜๊ฐœ๋ฉด ๊ฑ ๊ทธ๋Œ€๋กœ

- D๋Š” ์—ฐ์†ํ•œ ๊ฐœ์ˆ˜๋งŒํผ ์‚ญ์ œ

=> R ํ™€์ง ์ฒดํ‚นํ•  flag๋ณ€์ˆ˜ ๋งŒ๋“ค๊ณ , p์—ฐ์‚ฐ ๋Œ๋ฉด์„œ ์•ž์—์„œ๋ถ€ํ„ฐ ์‚ญ์ œํ•  ๊ฐœ์ˆ˜๋ž‘ ๋’ค์—์„œ๋ถ€ํ„ฐ ์‚ญ์ œํ•  ๊ฐœ์ˆ˜ ์ฐพ์•„์„œ ์‚ญ์ œ

 

์ฝ”๋“œ

def sol(p, n):
    flag = 0  # ์ง
    delete = [0, 0]
    # ํ™€์ด๋ฉด ๋’ค์ง‘(๋’ท ์ˆซ์ž ์‚ญ์ œ), ์ง์ด๋ฉด stay(์•ž ์ˆซ์ž ์‚ญ์ œ)
    for s in p:
        if s == 'R' and flag == 0:
            flag = 1
        elif s == 'R' and flag == 1:
            flag = 0
        elif s == 'D' and flag == 0:
            delete[0] += 1
        elif s == 'D' and flag == 1:
            delete[1] += 1
        if sum(delete) >= n:
            return 'error'

    # ์‚ญ์ œํ•˜๊ณ  ๋’ค์ง‘
    res = num_lst[delete[0]:len(num_lst) - delete[1]]
    if flag:
        res.reverse()
    return "["+",".join(res)+"]"


T = int(input())
for tc in range(1, T+1):
    p = input()  # ์ˆ˜ํ–‰ํ•  ์—ฐ์‚ฐ
    n = int(input())  # ๋ฐฐ์—ด์— ๋“ค์–ด์žˆ๋Š” ์ˆซ์ž ๊ฐœ์ˆ˜
    num_lst = input().lstrip('[').rstrip(']').split(',')

    print(sol(p, n))

 

 

ํ›„๊ธฐ

๋ฐฑ์ค€ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ถ„๋ฅ˜์— ๋ฑ์ด๋ผ๊ณ  ๋˜์–ด์žˆ์–ด ๋ฑ์ด ๋ญ”๊ฐ€ ์ฐพ์•„๋ดค๋”๋‹ˆ deque ์˜€๋‹ค ใ…Ž;;;;

์—ฌํƒœ ๋””ํ๋ผ๊ณ  ํ•˜๊ณ  ์‚ด์•˜๋„ค;;^^;;

 deque ๋ž€ ?   ์–‘๋ฐฉํ–ฅ์œผ๋กœ ๋„ฃ๊ณ  ๋บ„ ์ˆ˜ ์žˆ๋Š” ํ

(๊ทธ๋ฆผ ์ถœ์ฒ˜:  https://ehclub.co.kr/1222 )

๋‚˜๋Š” ๋ฑ์œผ๋กœ ์•ˆํ’€์—ˆ๋Š”๋ฐ ๋ฑ์œผ๋กœ ํ’€ ์ˆ˜๋„ ์žˆ๋‹ค.

๋Œ“๊ธ€