알고리즘(백준)/자료구조
[알고리즘/구현] 5430번 : AC - python
되다
2024. 10. 9. 22:18
링크 : https://www.acmicpc.net/problem/5430
- 문제
- 소요시간: 48분 52초
- 설계하기(접근방법)
1. 입력받기
리스트가 숫자로 주어지는 것이 아닌 문자열로 주어지기에 고민해야한다
먼저 split(,)으로 문자열을 나누어준 후,
왼쪽 끝과 오른쪽 끝의 괄호를 제거해준다
또한 배열의 원소 수가 많기 때문에 앞쪽의 원소를 제거하다 시간초과가 날 수 있다.
deque를 통해서 popleft를 사용할 수 있도록 해주자
2. 구현하기
입력받은 deque를 R일 때는 pop()을
정방향일 때는 popleft()를 수행할 수 있도록 짝수 홀수 카운터를 선언한다
중간에 배열이 비어버린 경우에 D를 수행한다면 error을 출력하고 다음 케이스로 넘어갈 수 있도록 구성하자
3. 출력하기
결과로 나온 리스트를 띄어쓰기 없이 출력해야하므로 join을 통해 출력해준다
- 코드(출력)
from collections import deque
t = int(input())
for _ in range(t):
cnt = 0
error_flag = False
p = input()
n = int(input())
deq = deque(input().split(','))
# 문자열 슬라이싱
if n == 1:
deq[0] = deq[0][1:-1]
elif n == 0:
deq = []
else:
deq[0] = deq[0][1:]
deq[-1] = deq[-1][:-1]
# 연산 수행
for i in p :
if i == 'R':
cnt += 1
else:
if len(deq) == 0:
print('error')
error_flag = 1
break
else:
if cnt % 2 == 0:
deq.popleft()
pass
else:
deq.pop()
#출력
if error_flag == 1:
continue
if len(deq) == 0:
print('[]')
elif cnt % 2 == 0:
print(f"[{','.join(deq)}]")
else:
deq.reverse()
print(f"[{','.join(deq)}]")
- 얻어갈 부분
1. deque를 reveser할 수 있다는 점을 잊어버렸었다. 다음에 잘 활용해주자
2. 출력할 때 join을 통해서 편리하게 출력할 수 있다.