학과공부/자료구조 5

[백준] 1874번 - 스택 수열 (By Python)

풀이과정 힌트를 참고하면 문제를 쉽게 이해할 수 있다. N이 8이라고 가정할 때, 입력된 수열 [4,3,6,8,7,5,2,1]을 구하는 과정은 다음과 같다. 먼저 1부터 8까지의 숫자를 넣기 위한 리스트와, push,pop 연산을 각각 '+'와 '-'로 나타내기 위한 스택 리스트를 생성한다. 1부터 4까지 먼저 리스트에 push한 후, 4,3을 pop한다. 그러면 리스트 내부에는 [1,2]만 남게 된다. 이후 6까지 push 한 후 다시 pop을 해주는데 여기서 문제가 발생한다. 다시 1부터 6까지 리스트에 push하게 되면 리스트 내부에는 [1,2,3,4,5,6]이 남게 되고,pop을 수행하면 [1,2,3,4,5]가 남게 된다.8까지 push한 후 pop연산을 수행하면 위의 순서대로 연산이 나오지 않을..

[백준] 9012번 - 괄호 (By Python)

풀이 과정 모든 괄호 문자열이 입력되었을 때, '(' 문자열과 ')' 문자열의 개수가 일치하면 됩니다. 따라서, 빈 리스트를 만들어 '(' 문자열이 입력되었을 경우 리스트에 괄호를 삽입하고, ')' 문자열이 입력되었을 경우 리스트에 미리 삽입된 '(' 괄호를 제거함으로써 균형을 맞춥니다. 만약 리스트가 비어있는 상태에서 ')' 괄호열이 입력될 경우 NO 문자열을 출력하며 반복문을 종료하며, 모든 입력이 완료되었을 때 리스트에 원소가 없으면 YES 문자열을 출력합니다. 풀이 def solution(): stack=[] words = input() for word in words: if word=='(': stack.append(word) elif word==')': if stack: stack.pop() ..

[백준] 10828번 - 스택 (By Python)

풀이 import sys N=int(sys.stdin.readline()) list=[] # 빈 리스트를 생성한다. for i in range(N): # N의 숫자만큼 word=sys.stdin.readline().split() # 문장을 읽어온다. if word[0]=='push': list.append(word[1]) elif word[0]== 'pop': if len(list)==0: print(-1) else: print(list.pop()) elif word[0]=='size': print(len(list)) elif word[0]=='empty': if len(list)==0: print(1) else: print(0) elif word[0]=='top': if len(list)==0: pri..