[Baekjoon] - 5430. AC (G5)

์˜ค๋™ํ›ˆยท2022๋…„ 2์›” 8์ผ
0

Baekjoon

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

1. Problem ๐Ÿ“ƒ

๐Ÿ“š ์ถœ์ฒ˜ - 5430 - AC

๋ฌธ์ œ ์„ค๋ช…
์„ ์˜์ด๋Š” ์ฃผ๋ง์— ํ•  ์ผ์ด ์—†์–ด์„œ ์ƒˆ๋กœ์šด ์–ธ์–ด 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๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ

์˜ˆ์ œ ์ž…๋ ฅ์˜ˆ์ œ ์ถœ๋ ฅ
4
RDD
4
[1,2,3,4]
DD
1
[42]
RRD
6
[1,1,2,3,5,8]
D
0
[]
[2,1]
error
[1,2,3,5,8]
error

2. Logic ๐Ÿ‘จโ€๐Ÿซ

์ด ๋ฌธ์ œ๋Š” ๊ฐ„๋‹จํ•ด ๋ณด์˜€์ง€๋งŒ ์€๊ทผํžˆ ์‹œ๊ฐ„์ด ์ข€ ๊ฑธ๋ฆฐ ๋ฌธ์ œ๋‹ค.

Logic
1. ์ผ๋‹จ ๊ฐ๊ฐ ์ž…๋ ฅ์„ ๋ฐ›๋Š”๋‹ค. ๋‹ค๋งŒ ๋ฌธ์ž์—ด์„ ์ž…๋ ฅ ๋ฐ›์„ ๋•Œ ๊ธธ์ด๊ฐ€ 0์ด๋ผ๋ฉด ์ž…๋ ฅ๋งŒ ๋ฐ›๊ณ  ๋นˆ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ƒ์„ฑํ•ด์ค€๋‹ค. ๊ธธ์ด๊ฐ€ 1 ์ด์ƒ์ด๋ผ๋ฉด split๊ณผ slicing์„ ์ด์šฉํ•ด ์ž…๋ ฅ์„ ๋ฐ›์•„์ค€๋‹ค.
2. ๊ทธ๋ฆฌ๊ณ  ๋ฌธ์ œ์— ์ฃผ์–ด์ง„ ๋Œ€๋กœ ์กฐ๊ฑด์„ ๋‹ฌ์•„์ฃผ๋ฉด ํ•ด๊ฒฐ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

Key Point
์—ฌ๊ธฐ์„œ ํฌ์ธํŠธ๋Š” 2๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.
1. reverse๋ฅผ ๋ฐ˜๋ณต์ ์œผ๋กœ ์‹คํ–‰ํ•˜๊ฒŒ ๋˜๋ฉด ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ๋”ฐ๋ผ์„œ Flag๋ฅผ ๋‘๊ณ  ์ถ”ํ›„์— ํ•œ๋ฒˆ๋งŒ ๋ณ€๊ฒฝํ•ด์ฃผ๋Š” ๊ฒƒ์ด ๋” ๋น ๋ฅด๊ฒŒ ์ž‘๋™ํ•œ๋‹ค.
2. list ๋ณด๋‹ค๋Š” deque๋ฅผ ์‚ฌ์šฉํ•ด ๋” ๋น ๋ฅด๊ฒŒ ์ด์šฉํ•˜๋ฉด ์‹œ๊ฐ„ ์ค„์ด๋Š” ๋ฐ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ๋‹ค.

3. Code ๐Ÿ’ป

1. ๋‚ด๊ฐ€ ํ‘ผ ์ฝ”๋“œ ๐Ÿ˜ (์‹คํŒจ)

import sys
imput = sys.stdin.readline

def check(spelling, arr):
    tmp = []
    reverse = False

    # ์ˆซ์ž๋งŒ ๊ตฌ๋ณ„ํ•ด ์ถ”๊ฐ€ํ•˜๊ธฐ
    # ์ด๋ ‡๊ฒŒ ํ•˜๋Š” ๊ฒฝ์šฐ, 1์˜ ์ž๋ฆฌ ์ˆซ์ž๋Š” ํ•ด๊ฒฐ์ด ๊ฐ€๋Šฅํ•˜์ง€๋งŒ 10์˜ ์ž๋ฆฌ ์ด์ƒ์˜ ์ˆ˜๊ฐ€ ๋“ค์–ด์˜จ๋‹ค๋ฉด error๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.
    for i in range(1, len(arr)-1, 2):
        tmp.append(int(arr[i]))
    
    # ์ŠคํŽ ๋ง์— ๋”ฐ๋ฅธ ์ž‘์—… ์‹œ์ž‘
    for i in spelling:
        if i == 'R':
            if reverse:
                reverse = False
            else:
                reverse = True
        elif i == 'D':
            if len(tmp) == 0:
                print('error')
                return
            else:
                if reverse:
                    tmp.pop()
                else:
                    tmp.pop(0)
    if reverse:
        tmp.reverse()  
    return print(tmp)
    
T = int(input().strip())
for i in range(T):
    spelling = list(map(str, input().strip()))
    N = int(input().strip())
    arr = input().strip()
    check(spelling, arr)

2. ๋‚ด๊ฐ€ ํ‘ผ ์ฝ”๋“œ ๐Ÿ˜ (์„ฑ๊ณต)

import sys
from collections import deque
imput = sys.stdin.readline

def check(spelling, queue):
    queue = deque(queue)
    reverse = False
    
    for i in spelling:
        if i == 'R':
            if reverse:
                reverse = False
            else:
                reverse = True
        elif i == 'D':
            if len(queue) == 0:
                print('error')
                return
            else:
                if reverse: # R ํ™€์ˆ˜ ์ผ ๋•Œ
                    queue.pop()
                else: # R ์ง์ˆ˜ ์ผ ๋•Œ
                    queue.popleft()
    if reverse:
        queue.reverse()
        print("["+','.join(queue)+"]")  
    else:
        print("["+','.join(queue)+"]")
    
T = int(input().strip())

for i in range(T):
    spelling = list(map(str, input().strip()))
    N = int(input().strip())
    if N == 0:
        input()
        queue = []
    else:
        queue = deque(map(str, input().strip()[1:-1].split(',')))
    check(spelling, queue)

4. Feedback ๐Ÿ“š

TypeError ๋ฐœ์ƒ

TypeError: sequence item 0: expected str instance, int found ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค.

๋ชฐ๋ž๋Š”๋ฐ join์„ ์‚ฌ์šฉํ•  ๋•Œ, list์˜ ๋ชจ๋“  element ๊ฐ’ ๋“ค์ด ๋ฌธ์ž์—ฌ์•ผ ํ•˜๊ณ , ์ •์ˆ˜๋‚˜ ์‹ค์ˆ˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.


์ฐธ๊ณ  ์ž๋ฃŒ ๐Ÿ“ฉ
<a href=https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=crm06217&logNo=221778003888>TypeError

profile
์‚ฝ์งˆ์˜ ๊ธฐ๋ก๋“ค๐Ÿฅ

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