๐ ๋ฌธ์
์ ์์ด๋ ์ฃผ๋ง์ ํ ์ผ์ด ์์ด์ ์๋ก์ด ์ธ์ด 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
'Problem Solving > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 17626๋ฒ: Four Squares - ํ์ด์ฌ (0) | 2022.06.20 |
---|---|
[๋ฐฑ์ค] 11403๋ฒ: ๊ฒฝ๋ก ์ฐพ๊ธฐ - ํ์ด์ฌ (0) | 2022.06.19 |
[๋ฐฑ์ค] 13023๋ฒ: ABCDE - ํ์ด์ฌ (0) | 2022.06.15 |
[๋ฐฑ์ค] 1331๋ฒ: ๋์ดํธ ํฌ์ด - ํ์ด์ฌ (0) | 2022.06.13 |
[๋ฐฑ์ค] 15312๋ฒ: ์ด๋ฆ ๊ถํฉ - ํ์ด์ฌ (1) | 2022.06.13 |