백준 5430(AC) -Python(파이썬) - 자료구조
반응형
문제 풀이
1. 일단 수행할 함수, 배열에 들었는 수의 개수, 배열에 들어있는 정수를 받아들인다.
2. 배열에 들어있는 정수는 항상 "["+배열에 들어 있는 정수+"]" 구조로 이루어졌다.
"[]"을 제외한 값을 리스트로 받아들이기 위해서 인덱스 1부터 -1까지의 인덱스르 리스트로 받아들인다.[1:-1]
배열 | "R" | "D" | "D" | |||
4 | 1 | |||||
3 | 2 | 1 | ||||
2 | 3 | 2 | 1 | |||
1 | 4 | 3 | 2 |
이런 느낌으로 RDD 함수가 진행되면 [ 2,1 ]이 남는다.
📌 문제 풀면서 주의할점
1. 파이썬에서는 deque 라이브러리를 사용
2. reverse를 할때마다 하면 시간 초과가 나기 때문에
"R"을 할 때마다 cnt값을 증가시켜 cnt가 2로 나누어지는지 안 나누어지는지 확인 필요
문제 풀이
① 테스트 케이스의 개수, 수행할 함수, 배열에 들어있는 수의 개수, 배열안의 정수 입력
② 배열에 들어있는 수의 개수가 0일 경우 배열을 초기화
③ 함수를 수행할 때마다 "R","D"의 값인지 체크
④
1. "R"인 경우 cnt +1
2. "D"인 경우
2-1. q의 길이가 0인 경우 error로 출력하고 break
2-2. q의 길이가 0이 아닌 경우
cnt%2==0( reverse를 안 하기 때문에 ) : 큐를 왼쪽에서 pop
cnt%2!=0( reverse이기 때문에 ) : 큐를 오른쪽에서 pop
3. break가 발생하지 않았을 경우 실행하도록 ( else문 실행 )
3-1. cnt%2==0(reverse 안 하기 때문에) : 그대로 출력
3-2. cnt%2!=0(reverse 하기 때문에):큐를 reverse 한 후에 출력
💻 Python(파이썬)
from collections import deque
import sys
#테스트 케이스의 개수
t = int(sys.stdin.readline())
for i in range(t):
#수행할 함수
p = sys.stdin.readline()
#배열에 들어있는 수의 개수
n = int(sys.stdin.readline())
#배열 안의 정수 []을 제외하기 위해서 인덱스 [1:-1]
arr = sys.stdin.readline().rstrip()[1:-1].split(',')
#큐로 구현 -deque 라이브러리 사용
q = deque(arr)
#R의 개수 체크
cnt = 0
#n의 개수가 0개 일때는 배열을 초기화
if n == 0:
q = []
for j in p:
#'R'인 경우
if j == 'R':
#cnt값 증가
cnt += 1
#'D'인 경우
elif j == 'D':
#큐의 길이 0인 경우는 무조건 error
if len(q) == 0:
print("error")
break
else:
#reverse 안하기 때문에 왼쪽에서 pop
if cnt % 2 == 0:
q.popleft()
#reverse 하기 때문에 오른쪽에서 pop
else:
q.pop()
#break를 안할 경우
else:
#reverse 안하기 때문에 그래도 출력
if cnt % 2 == 0:
print("[" + ",".join(q) + "]")
#reverse 하기 때문에 reverse 하기
else:
q.reverse()
print("[" + ",".join(q) + "]")
💻 Java( 자바 )
...나중에 ...해야겠다..
반응형
'[백준] Python,Java로 풀기📖 > 자료구조' 카테고리의 다른 글
백준 9012(괄호) - 스택 (0) | 2024.10.14 |
---|---|
백준 1966(프린터 큐) - Python(파이썬) - 큐,자료구조 (0) | 2022.07.03 |
백준 10828(스택) - Python(파이썬),Java(자바) -자료구조,스택 (0) | 2022.06.07 |
백준 1158(요세푸스 문제) - Python(파이썬),Java(자바) - 자료구조(큐) (0) | 2022.06.07 |
백준 1927(최소 힙) - Python(파이썬) - 자료구조 (0) | 2022.06.01 |