문제) queuestack
해당 문제는 문제를 이해하기 까지 조금 시간이 오래 걸린 문제였다. 한글로 이루어진 문제인데 왜 해독이 어려운지...
어찌 되었든 해당 문제는 문제의 설명에 나와 있는 데로 큐 또는 스택을 pop을 하여 마지막에 pop 이된 변수를 따로 저장하여 따로 저장된 변수들을 한줄로 출력해야 하는 문제였다
그리고 주어진 입력들이 먼저
N이 주어지는데 이건 큐 또는 스택의 갯수를 말하는 것이고
다음 2번째 줄은 각각의 큐 또는 스택을 결정하는 명령어였다. 0이면 큐이고 1이면 스택이다
다음 줄은 각각의 큐 또는 스택에 들어갈 값이였다
그후 수열의 크기 M이 주어지고
다음 줄에 수열의 원소들이 주어지게 되는 것이다
이 것을 이해하기 까지 좀 걸렸다...
문제 설명이랑 입력값과 출력 값을 비교하여 왜 저렇게 되지 하면서 계속 고민만 하다가 입력에 대한 설명을 다시 차근히 읽고 난뒤에야 이해가 되었다
문제를 이해하고 생각보다 코드를 빠르게 쓸 수 있었다(복선인가...)
실패코드
import sys
from collections import deque
N = int(sys.stdin.readline().strip())
queuestack = []
for a, b in zip(list(map(int, sys.stdin.readline().split())), list(map(int, sys.stdin.readline().split()))):
if a == 0:
queuestack.append(deque([b]))
else:
queuestack.append([b])
M = int(sys.stdin.readline().strip())
C = list(map(int, sys.stdin.readline().split()))
answer = []
for x in C:
add_x = x
for check in queuestack:
check.append(add_x)
if str(type(check)) == "<class 'list'>":
add_x = check.pop()
else:
add_x = check.popleft()
answer.append(add_x)
sys.stdout.write(f'{" ".join(map(str, answer))}')
의식의 흐름대로 입력에 대한 설명 + 문제 설명의 로직대로 코드를 제출을 하였지만 시간초가나면서 실패하게 되었다.
일단 for문이 2개이기에 이것의 시간 복잡도는 O(N^2)이다
그럼 최소 O(N)으로 바꿔야지만 통과가 된다는 의미이기도 하다
그럼 일단 필요없는 스택 - 삽입 후 출력하기에 결국 삽입한 값이 나오기에 스택은 불필요하다는 것을 알 수 있다. 그렇기에 불필요한 스택에 대한 정보는 삭제 처리하였지만 그래도 시간초가 난다...
그러다가 생각해보니깐 결국은 먼저 하나의 큐에 값을 앞에서부터 넣으면 된다는 것을 알게 되었다
왜냐하면 1,2,3을 문제의 설명되로 한다고 했을 때 3이 나오게 하면(큐 기준) 되는 것이다 만약 스택으로만 이루어졌다고 하면 입력받은 순서대로 뽑아내면 되는 것이다
정답 주의
import sys
from collections import deque
N = int(sys.stdin.readline().strip())
que = deque([])
for a, b in zip(list(map(int, sys.stdin.readline().split())), list(map(int, sys.stdin.readline().split()))):
if a == 0:
que.appendleft(b)
M = int(sys.stdin.readline().strip())
C = list(map(int, sys.stdin.readline().split()))
answer = []
for x in C:
que.append(x)
answer.append(que.popleft())
sys.stdout.write(f'{" ".join(map(str, answer))}')
'Python > Python 문제' 카테고리의 다른 글
백준) 방 배정 (7) | 2024.08.30 |
---|---|
백준) 풍선 터뜨리기 (0) | 2024.08.14 |
백준) 골드바흐 파티션 (0) | 2024.08.09 |
프로그래머스) 쿼드압축 후 개수 세기 (0) | 2024.08.07 |
백준 ) 게리맨더링 (0) | 2024.08.05 |