Coding Test/백준(Python)
[백준/Python] 5430번(구현)_AC
syunze
2024. 2. 10. 17:43
📌문제 유형
구현, 자료구조 (골드 Lv.5)
📌문제
5430번: AC
각 테스트 케이스에 대해서, 입력으로 주어진 정수 배열에 함수를 수행한 결과를 출력한다. 만약, 에러가 발생한 경우에는 error를 출력한다.
www.acmicpc.net
📌나의 문제풀이
- 1차(시간초과) : arr_len == 0과 R,D와의 관계 해결 + continue를 break로 작성
from collections import deque
t = int(input())
for _ in range(t):
action = list(map(str,input()))
arr_len = int(input())
arr = input()
# t만큼 반복 -> break 아닌 continue
# arr_len 0인데 R로만 이루어짐 -> [] 출력
if arr_len == 0 and 'D' in action:
print('error')
continue
elif arr_len == 0 and 'D' not in action:
print('[]')
continue
arr = list(map(int,arr[1:-1].split(',')))
arr = deque(arr)
# action 순서대로 수행
flag = 0
for act in action:
if act == 'R':
arr.reverse()
elif act == 'D':
if len(arr) < 1:
flag = 1
break
else:
arr.popleft()
if flag == 1:
print('error')
else:
print(str(list(arr)).replace(" ",""))
# print()
- 2차(정답) : reverse()를 번번히 적용하면 시간초과
-> R 개수 만큼 다르게 적용하여 해결
import sys
from collections import deque
t = int(sys.stdin.readline())
for _ in range(t):
action = list(map(str,sys.stdin.readline()))
arr_len = int(sys.stdin.readline().strip())
arr = sys.stdin.readline().strip()
if arr_len == 0 and 'D' in action:
print('error')
continue
elif arr_len == 0 and 'D' not in action:
print('[]')
continue
arr = list(map(int,arr[1:-1].split(',')))
arr = deque(arr)
r_cnt = 0
# action 순서대로 수행
flag = 0
for act in action:
if act == 'R':
r_cnt += 1
elif act == 'D':
if len(arr) < 1:
flag = 1
break
else:
if r_cnt % 2 == 0:
arr.popleft()
else:
arr.pop()
if flag == 1:
print('error')
else:
if r_cnt % 2 == 0:
print(str(list(arr)).replace(" ",""))
else:
arr.reverse()
print(str(list(arr)).replace(" ",""))
# print()
📌다른사람의 문제풀이
[백준] 5430번 AC (Python 파이썬)
www.acmicpc.net/problem/5430 5430번: AC 각 테스트 케이스에 대해서, 입력으로 주어진 정수 배열에 함수를 수행한 결과를 출력한다. 만약, 에러가 발생한 경우에는 error를 출력한다. www.acmicpc.net 문제 설명
hongcoding.tistory.com
📌리뷰
- 문제가 쉬운데 정답률 20%여서 무엇인가 했더니 자잘한 조건들로 걸렸다.
- arr_len == 0과 R,D일 경우 다르게 적용
- reverse() 매번 적용하면 시간초과 -> reverse() 짝,홀수로 횟수 줄이기
728x90