https://www.acmicpc.net/problem/5430
삽질 엄청한 문제다.
문제가 제목값 하는 문제다.
나에게 도움이 된 반례는
1
D
1
[]
정답 : error
1
R
1
[]
정답 : []
반례를 찾아보며 여러번 수정한 끝에 맞출 수 있었다.
코드 길이를 보면 알겠지만 반례를 찾아가며 코드가 한줄한줄 늘어났고, 늘어난 코드에서 필요없는 부분들을 지우다 보니 이렇게 됐다.
저기 제일 긴 코드도 내가 찾아본 모든 반례가 통과하긴 했다.
from collections import deque
import sys
import re
input = sys.stdin.readline
num = int(input().rstrip())
for _ in range(num) :
command = input().rstrip()
n = int(input().rstrip())
s = input().rstrip()
if len(s) == 2 :
continueTF = False
for c in command :
if c == 'D' :
print('error')
continueTF = True
if not continueTF :
print('[]')
else :
continue
else :
que = deque(map(int, s[1:len(s)-1].split(',')))
try :
reverseTF = False
for c in command :
if c == 'D' and not reverseTF:
que.popleft()
elif c == 'D' and reverseTF :
que.pop()
elif c == 'R' :
if not reverseTF :
reverseTF = True
else :
reverseTF = False
if len(que) != 0 :
if reverseTF :
que = list(map(str, que))[::-1]
ans = ','.join(que)
print('[{}]'.format(ans))
else :
que = list(map(str, que))
ans = ','.join(que)
print('[{}]'.format(ans))
else :
print('[]')
except :
print('error')
이게 제일 긴 코드인데, 아직도 이게 왜 통과 못했는지 모르겠다. 어디가 문제인지.
아마 처음에 입력된 리스트가 비어있을때 처리하는 부분(if len(s)==2이 부분)이 문제인것 같긴 하다. 그냥 반례에 맞게만 수정하다 보니 반례외에 다른 문제점이 있었던것 같다.
from collections import deque
num = int(input())
for _ in range(num) :
command = input()
n = int(input().rstrip())
s = input()
if n == 0 :
que = deque()
else :
que = deque(map(int, s[1:-1].split(',')))
try :
reverseTF = False
for c in command :
if c == 'D' and not reverseTF:
que.popleft()
elif c == 'D' and reverseTF :
que.pop()
elif c == 'R' :
reverseTF = not reverseTF
if reverseTF :
que = list(map(str, que))[::-1]
ans = ','.join(que)
print('[{}]'.format(ans))
else :
que = list(map(str, que))
ans = ','.join(que)
print('[{}]'.format(ans))
except :
print('error')
필요 없는 부분은 싹 지우고 깔끔한 코드가 됐다.
반례에 맞게 수정하는것도 중요하지만 문제를 맞추기 위해 어거지로 풀이하는건 지양해야겠다..
[백준/파이썬]2579 계단 오르기 (0) | 2023.08.09 |
---|---|
[백준/파이썬]24511 queuestack (0) | 2023.08.04 |
[파이썬/알고리즘] 응급실 (0) | 2023.07.25 |
[백준/파이썬]1935 후위 표기식2 (0) | 2023.07.22 |
[백준/파이썬]1918 후위 표기식 (0) | 2023.07.19 |