문제 3986번: 좋은 단어 이번 계절학기에 심리학 개론을 수강 중인 평석이는 오늘 자정까지 보고서를 제출해야 한다. 보고서 작성이 너무 지루했던 평석이는 노트북에 엎드려서 꾸벅꾸벅 졸다가 제출 마감 1시간 전에 www.acmicpc.net 코드 My answer import sys input=sys.stdin.readline cnt=0 n=int(input()) for i in range(n): stack=[] tmp=input().rstrip() tmp=[j for j in tmp] for k in tmp: if(stack==[]): stack.append(k) else: if(stack[-1]==k): stack.pop() else: stack.append(k) #print(stack) if(sta..
코딩테스트
문제 4949번: 균형잡힌 세상 하나 또는 여러줄에 걸쳐서 문자열이 주어진다. 각 문자열은 영문 알파벳, 공백, 소괄호("( )") 대괄호("[ ]")등으로 이루어져 있으며, 길이는 100글자보다 작거나 같다. 입력의 종료조건으로 맨 마 www.acmicpc.net 코드 My answer import sys input=sys.stdin.readline while(1): flag=1 stack=[] tmp=input().rstrip() if(tmp=='.'):break tmp=[i for i in tmp] for i in tmp: if(i.isalpha() or i=='.' or i==' '):continue else: if(i in ['(','[']): stack.append(i) else: if(sta..
문제 1874번: 스택 수열 1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다. www.acmicpc.net 코드 My answer import sys input=sys.stdin.readline n=int(input()) stack1,stack2=[],[] # push하는 리스트, 정답과 비교할 최종리스트 answer,tmp=[],[] # 입력받는수열, +-저장하는 리스트 index=0 for i in range(n): answer.append(int(input())) for i ..
오늘은 deque 라이브러리에 대해서 알아볼 것이다. 예전에 que큐에 대해서는 글을 작성했었는데 큐는 선입선출 방식으로 작동한다. deque(데큐)는 양방향 큐라고 생각하면 편하다. 말 그대로 데이터의 앞, 뒤에서 접근할 수 있는 큐이다. deque를 사용하기 위해서는 라이브러리를 가져와야 한다. 아래와 같이 import한뒤 deque 자료구조형을 선언해주면 된다. from collections import deque data=deque() deque 자료구조에서 쓸 수 있는 메서드는 여러가지가 있다. from collections import deque data=deque() data.append() item을 데크의 오른쪽 끝에 삽입 data.appendleft(item): item을 데크의 왼쪽 ..
문제 2164번: 카드2 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 www.acmicpc.net 코드 My answer import sys from collections import deque input=sys.stdin.readline n=int(input()) stack=deque([i+1 for i in range(n)]) while(len(stack)!=1): stack.popleft() a=stack[0] stack.popleft() stack.append(a) print(*stack) Another answer n,s=int(input())..
문제 18258번: 큐 2 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 2,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 코드 My answer import sys from collections import deque input=sys.stdin.readline n=int(input()) que=deque() for i in range(n): m=list(input().split()) if(m[0]=='push'): que.append(int(m[1])) elif(m[0]=='pop'): if(que): print(que.popleft()) else:p..