-
18115 카드 놓기코테 대비 python/백준 2023. 4. 16. 22:33
https://www.acmicpc.net/problem/18115
18115번: 카드 놓기
수현이는 카드 기술을 연습하고 있다. 수현이의 손에 들린 카드를 하나씩 내려놓아 바닥에 쌓으려고 한다. 수현이가 쓸 수 있는 기술은 다음 3가지다. 제일 위의 카드 1장을 바닥에 내려놓는다.
www.acmicpc.net
시간초과 풀이
#####시간초과 풀이 ###### ##1. popleft() ##2. popleft() popleft() insert() ##3. pop() from collections import deque import sys input=sys.stdin.readline n=int(input()) card=list(map(int,input().split())) q=deque([0]*n) for i in range(n): q[i]='a'*(i+1) #print(q) tmp=[0]*n #print(tmp) idx=1 for i in card: if i ==1: tmp[n-idx]=q.popleft() elif i==2: a=q.popleft() b=q.popleft() q.insert(0,a) tmp[n-idx]=b elif i==3: tmp[n-idx]=q.pop() idx+=1 #print(tmp) result=[0]*n ans=dict() for i in range(n): result[i]=i+1 for i in range(n): ans[tmp[i]] = result[i] #tmp[i]= result[i] #print(ans) #print(q) for i in range(n-1): print(ans['a'*(i+1)],end=' ') print(ans['a'*(n)], end='')
핵심은 해왔던 연산을 거꾸로하면 처음 카드 순서가 나오는 것!! ##### ##1. popleft() ##2. popleft() popleft() insert() ##3. pop() from collections import deque import sys input=sys.stdin.readline n=int(input()) card=list(map(int,input().split())) #####거꾸로 하면 처음 카드 숫자 나옴 ###### card.reverse() q=deque() for i in range(n): if card[i] ==1: q.appendleft(i+1) elif card[i]==2: q.insert(1,i+1) elif card[i] ==3: q.append(i+1) for i in q: print(i, end=' ')
'코테 대비 python > 백준' 카테고리의 다른 글
[복습] 15649 n과 m 1 (1) 2023.04.17 [복습] 14502 연구소 (0) 2023.04.17 2580 스도쿠 (0) 2023.04.14 복습 1935 후위 표기식2 (0) 2023.04.14 1181 단어 정렬 (0) 2023.04.11