We will find a way, we always have.

-interstellar

Problem Solving/๋ฐฑ์ค€

[๋ฐฑ์ค€] 5430๋ฒˆ: AC - ํŒŒ์ด์ฌ

Redddy 2022. 6. 16. 21:27

๐Ÿ”ˆ ๋ฌธ์ œ

์„ ์˜์ด๋Š” ์ฃผ๋ง์— ํ•  ์ผ์ด ์—†์–ด์„œ ์ƒˆ๋กœ์šด ์–ธ์–ด AC๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค. AC๋Š” ์ •์ˆ˜ ๋ฐฐ์—ด์— ์—ฐ์‚ฐ์„ ํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“  ์–ธ์–ด์ด๋‹ค. ์ด ์–ธ์–ด์—๋Š” ๋‘ ๊ฐ€์ง€ ํ•จ์ˆ˜ R(๋’ค์ง‘๊ธฐ)๊ณผ D(๋ฒ„๋ฆฌ๊ธฐ)๊ฐ€ ์žˆ๋‹ค.
ํ•จ์ˆ˜ R์€ ๋ฐฐ์—ด์— ์žˆ๋Š” ์ˆ˜์˜ ์ˆœ์„œ๋ฅผ ๋’ค์ง‘๋Š” ํ•จ์ˆ˜์ด๊ณ , D๋Š” ์ฒซ ๋ฒˆ์งธ ์ˆ˜๋ฅผ ๋ฒ„๋ฆฌ๋Š” ํ•จ์ˆ˜์ด๋‹ค. ๋ฐฐ์—ด์ด ๋น„์–ด์žˆ๋Š”๋ฐ D๋ฅผ ์‚ฌ์šฉํ•œ ๊ฒฝ์šฐ์—๋Š” ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.
ํ•จ์ˆ˜๋Š” ์กฐํ•ฉํ•ด์„œ ํ•œ ๋ฒˆ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, "AB"๋Š” A๋ฅผ ์ˆ˜ํ–‰ํ•œ ๋‹ค์Œ์— ๋ฐ”๋กœ ์ด์–ด์„œ B๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, "RDD"๋Š” ๋ฐฐ์—ด์„ ๋’ค์ง‘์€ ๋‹ค์Œ ์ฒ˜์Œ ๋‘ ์ˆ˜๋ฅผ ๋ฒ„๋ฆฌ๋Š” ํ•จ์ˆ˜์ด๋‹ค.
๋ฐฐ์—ด์˜ ์ดˆ๊ธฐ๊ฐ’๊ณผ ์ˆ˜ํ–‰ํ•  ํ•จ์ˆ˜๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ตœ์ข… ๊ฒฐ๊ณผ๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

 

๐Ÿ“์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ๊ฐœ์ˆ˜ T๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. T๋Š” ์ตœ๋Œ€ 100์ด๋‹ค.
๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ์ฒซ์งธ ์ค„์—๋Š” ์ˆ˜ํ–‰ํ•  ํ•จ์ˆ˜ p๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. p์˜ ๊ธธ์ด๋Š” 1๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๊ณ , 100,000๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™๋‹ค.
๋‹ค์Œ ์ค„์—๋Š” ๋ฐฐ์—ด์— ๋“ค์–ด์žˆ๋Š” ์ˆ˜์˜ ๊ฐœ์ˆ˜ n์ด ์ฃผ์–ด์ง„๋‹ค. (0 ≤ n ≤ 100,000)
๋‹ค์Œ ์ค„์—๋Š” [x1,...,xn]๊ณผ ๊ฐ™์€ ํ˜•ํƒœ๋กœ ๋ฐฐ์—ด์— ๋“ค์–ด์žˆ๋Š” ์ •์ˆ˜๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. (1 ≤ xi ≤ 100)
์ „์ฒด ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์— ์ฃผ์–ด์ง€๋Š” p์˜ ๊ธธ์ด์˜ ํ•ฉ๊ณผ n์˜ ํ•ฉ์€ 70๋งŒ์„ ๋„˜์ง€ ์•Š๋Š”๋‹ค.

 

๐Ÿ“‘์ถœ๋ ฅ

๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์— ๋Œ€ํ•ด์„œ, ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง„ ์ •์ˆ˜ ๋ฐฐ์—ด์— ํ•จ์ˆ˜๋ฅผ ์ˆ˜ํ–‰ํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ๋งŒ์•ฝ, ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒฝ์šฐ์—๋Š” error๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

 

๐Ÿ“š ๋ฌธ์ œ ํ•ด์„

์ฃผ์–ด์ง„ ๋ช…๋ น๋Œ€๋กœ ๋ฌธ์ž์—ด์„ ๋’ค์ง‘๊ฑฐ๋‚˜ ์ธ๋ฑ์Šค 0์˜ ๋ฌธ์ž๋ฅผ ์ง€์šฐ๋ฉด ๋˜๋Š” ๋ฌธ์ œ์˜€๋‹ค. ์ฒซ ์ œ์ถœ์—๋Š” ์‹œ๊ฐ„์ดˆ๊ณผ ํŒ์ •์„ ๋ฐ›์•˜๋‹ค. ์ด์œ ๋Š” reverse() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์˜€๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ํ•œ๋‘๋ฒˆ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ๋ชจ๋ฅผ๊นŒ ์ž…๋ ฅ์œผ๋กœ 100000 ์ž๋ฆฌ์˜ ๋ฌธ์ž์—ด์„ 100000๋ฒˆ reverse ํ•˜๋ผ๊ณ  ํ•˜๋ฉด ์‹œ๊ฐ„์ดˆ๊ณผ ๋‚˜๋Š” ๊ฒƒ์€ ๋‹น์—ฐ์ง€์‚ฌ์ด๋‹ค.
 
์ž ๊น ๊ณ ๋ฏผํ•ด๋ณด์•˜๋”๋‹ˆ reverse ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ๋ฌธ์ž๋ฅผ ๋’ค์ง‘์„ ๋ฐฉ๋ฒ•์ด ๋– ์˜ฌ๋ž๋‹ค. ์šฐ์„  ์ž…๋ ฅ์œผ๋กœ R์ด ์—ฌ๋Ÿฌ๋ฒˆ ๋“ค์–ด์˜จ๋‹ค๊ณ  ํ•˜์—ฌ๋„ ์ตœ์ข…์ ์œผ๋กœ๋Š” ํ•œ๋ฒˆ ๋’ค์ง‘๊ฑฐ๋‚˜ ๋’ค์ง‘์ด ์•Š์„ ๊ฒƒ์ด๋‹ค. ์ฆ‰ R์ด ์ง์ˆ˜๋ฒˆ ์ž…๋ ฅ๋œ๋‹ค๋ฉด ๋’ค์ง‘์ง€ ์•Š์•„๋„ ๋˜๊ณ , ํ™€์ˆ˜๋ฒˆ ๋“ค์–ด์˜จ๋‹ค๋ฉด ํ•œ๋ฒˆ๋งŒ ๋’ค์ง‘์œผ๋ฉด ๋œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  list[-1]๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ž๋ฅผ ๋’ค์ง‘์–ด ์ฃผ์—ˆ๋‹ค.(๊ทธ๊ฒŒ๊ทธ๊ฑด๊ฐ€?ใ…Ž, ๊ทธ๋ ‡๋‹คํ•˜์—ฌ๋„ 2๋ฒˆ ์ด์ƒ reverse ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.)

๊ทธ๋ฆฌ๊ณ  ๋ฌธ์ž์—ด์„ ์ง€์šฐ๋Š” ๊ฒƒ๋„ ๋งค๋ฒˆ ์ดˆ๊ธฐํ™” ํ•ด์ค„ ํ•„์š”์—†์ด, ์™ผ์ชฝ์— ์ง€์šธ ๋ฌธ์ž๋ž‘ ์˜ค๋ฅธ์ชฝ์— ์ง€์šธ ๋ฌธ์ž ์ฒดํฌํ•˜์—ฌ ๋งˆ์ง€๋ง‰์— ์ถœ๋ ฅํ•  ๋•Œ ๊ทธ๋ถ€๋ถ„ ์ œ์™ธํ•˜๊ณ  ์ถœ๋ ฅํ•ด์ฃผ๋ฉด ์‹œ๊ฐ„์„ ํ›จ์”ฌ ์ค„์ผ ์ˆ˜ ์žˆ์—ˆ๋‹ค. list[left:n-right]

 

์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ถ„๋ฅ˜์—๋Š” ๋ฑ๋„ ํฌํ•จ๋˜์–ด ์žˆ์—ˆ์ง€๋งŒ deque ๋ถˆ๋Ÿฌ์˜ค์ง€ ์•Š๊ณ ๋„ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. (๋ฟŒ๋“ฏ(?))

 

import sys
input = sys.stdin.readline

for _ in range(int(input())):
    code = input().rstrip() # ๋ช…๋ น์–ด
    n = int(input()) # ๋ฌธ์ž์—ด ๊ฐœ์ˆ˜
    nums = list(map(str,input().rstrip().split(','))) # ๋ฌธ์ž์—ด , ์œผ๋กœ ๋ถ„๋ฆฌ
    rev = 0 # ๋ฆฌ๋ฒ„์Šค ์ฒดํฌ ๋ณ€์ˆ˜
    left = 0 # ์™ผ์ชฝ ์‚ญ์ œ ๋ณ€์ˆ˜
    right = 0 # ์˜ค๋ฅธ์ชฝ ์‚ญ์ œ ๋ณ€์ˆ˜
    for i in code: 
        if i == 'R': # ํ•œ๋ฒˆ ๋’ค์ง‘์œผ๋ž˜! ์‘ ์•ˆ๋’ค์ง‘์–ด~
            rev += 1
        else: # D ์ž…๋ ฅ์‹œ
            if rev%2==0: # ํ˜„์žฌ ๋’ค์ง‘ํžˆ์ง€ ์•Š์€ ์ƒํƒœ๋ผ๋ฉด ์™ผ์ชฝ๊ฑฐ ์ œ๊ฑฐํ•  ๊ฑฐ์ž„
                left += 1
            else:
                right += 1 # ๋’ค์ง‘ํžŒ ์ƒํƒœ ์˜ค๋ฅธ์ชฝ๊ฑฐ ์ œ๊ฑฐํ•  ๊ฑฐ์ž„
        if n < (left + right): # ๋ฌธ์ž์ˆ˜๋ณด๋‹ค ์ง€์šฐ๋Š” ๊ฒƒ์ด ๋” ๋งŽ์„ ๋•Œ error 
            print("error")
            break
    else: # for else ๋ฌธ์ด๋‹ค. 
        nums[0] = nums[0].replace('[','') # ์ œ์ผ ์•ž์˜ ๋ฌธ์ž [ ์ œ๊ฑฐํ•ด์คŒ
        nums[-1] = nums[-1].replace(']','') # ] ์ด๊ฒƒ๋„ ์ œ๊ฑฐํ•ด์คŒ
        if rev%2 == 0: # ์•ˆ๋’ค์ง‘์–ด๋„ ๋œ๋‹ค๋ฉด
            print('['+','.join(nums[left:n-right])+']') # ์ด์˜๊ฒŒ ์ถœ๋ ฅํ•ด์คŒ
        else: # ๋’ค์ง‘์–ด์•ผ ํ•œ๋‹ค๋ฉด
            print('['+','.join(nums[left:n-right][::-1])+']') # ์•„๋ฆ„๋‹ต๊ฒŒ ์ถœ๋ ฅํ•ด์คŒ
            # ๋„์–ด์“ฐ๊ธฐ ์ฃผ์˜! ํ•˜๋ฉด ์•ˆ๋จใ…Ž

 

๐Ÿญ ์‹œํ–‰์ฐฉ์˜ค

 

๐Ÿ”— ๋ฌธ์ œ๋งํฌ AC

 

5430๋ฒˆ: AC

๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์— ๋Œ€ํ•ด์„œ, ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง„ ์ •์ˆ˜ ๋ฐฐ์—ด์— ํ•จ์ˆ˜๋ฅผ ์ˆ˜ํ–‰ํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ๋งŒ์•ฝ, ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒฝ์šฐ์—๋Š” error๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

www.acmicpc.net