Baekjoon5430 - AC (Python)
백준 사이트 5430 - AC 문제입니다.
이 글을 보시기 전에 문제를 풀기 위해 충분한 생각을 하셨나요? 답을 안 보고 푸는게 최대한 고민하는게 가장 중요하다고 생각합니다.!!
☑️ 1. 문제
https://www.acmicpc.net/problem/5430
☑️ 2. Input , Output
☑️ 3. 분류 및 난이도
solved.ac class 3 문제입니다.
☑️ 4. 생각한 것들
- 당연하겠지만 ‘R’명령어로 기본 내장라이브러리인
reverse
를 호출하는건 바보같은 짓입니다. 시간초과 나겠지요. 그냥R
이 홀수번나왔냐 짝수번 나왔냐 체크만 해주면 됩니다. - 나머지는 어렵지 않습니다. 저는 특이하게
deque
의 특성을 이용해서 앞 뒤로 자유자재로 빼줬습니다. - 이 문제는 오답률이 굉장히 높은데, 문제에 적혀있지 않은.. 여러 입출력 문제들 때문에 사람들이 곤욕을 치룬것 같습니다.
- 무조건
D
명령어에 대해서만 ‘error’를 발생시켜야합니다. 즉 빈 배열이라해도R
명령어를 하면[]
를 출력해야합니다. - 그리고 Python은 list를 그대로 출력하면 숫자사이에 공백에 붙습니다. 이렇게도 출력하면 안되고 공백들을 제거한 상태로 출력해야합니다.
- 이것저것 추가하다보니 더티코드가 되었습니다.
5. code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
from collections import deque
from sys import stdin
def solution() -> None:
t_case = int(stdin.readline())
for _ in range(t_case):
func = stdin.readline().rstrip('\n')
size = int(stdin.readline().rstrip('\n'))
data_list = stdin.readline().rstrip('\n').strip("[]")
if data_list:
data_list = deque(map(int, data_list.split(',')))
# cnt == True -> R이 짝수번
cnt = True
error = False
for i in range(len(func)):
if func[i] == 'R':
cnt = not cnt
else:
if cnt:
if data_list:
data_list.popleft()
else:
print('error')
error = not error
break
else:
if data_list:
data_list.pop()
else:
print('error')
error = not error
break
if not error:
if cnt:
print('[' + ','.join(map(str, data_list)) + ']')
else:
print('[' + ','.join(map(str, list(reversed(data_list)))) + ']')
solution()
6. 후기
c++로 작성이 필요하거나 도움이 필요하시면 댓글을 작성해주세요.!! 기록용이라 설명이 자세하지 않습니다.
This post is licensed under CC BY 4.0 by the author.