[Coding Test]
[백준] 9012 파이썬(python) : 괄호
9012번: 괄호 t = int(input()) for i in range(t): galho = input() stack = [] for j in galho: if stack: # 1 if j == "(": stack.append(j) else: if stack[-1] == "(": stack.pop() else: stack.append(j) else: # 1 stack.append(j) if len(stack) == 0: print("YES") else: print("NO") # 1 : 스택이 비어있는지 채워져있는지를 확인해야 한다. 그렇지 않으면 예시에는 보이지 않는 테스트 케이스에서 )))))의 연타를 맞고 답이 틀리게 된다. 나의 코드) import sys t = int(sys.stdin.read..
[백준] 10773 파이썬(python) : 제로
https://www.acmicpc.net/problem/10773 10773번: 제로 첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000) 이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경 www.acmicpc.net import sys n = int(sys.stdin.readline()) number = [ int(sys.stdin.readline()) for _ in range(n) ] stack = [] for i in range(len(number)): if stack and number[i] == 0: #! stack.pop() else: #2 stack.append(..
[백준] 2812 파이썬(python) : 크게 만들기 - (★)
2812번: 크게 만들기 #1이 단조스택을 이용하는것 같지만 cnt가 양수일때만 적용되므로 마지막 stack이 단조롭지 않을 수 있다. import sys n, k = map(int, sys.stdin.readline().split()) string = list(sys.stdin.readline().rstrip()) stack, cnt = [], k for char in string: while stack and stack[-1] < int(char) and cnt: #1 stack.pop() cnt -= 1 stack.append(int(char)) for idx in range(n-k): print(stack[idx], end='') #2 # 1 : (1)answer 스택이 비어있지 않고 (2)삭제가..
[백준] 10799 파이썬(python) : 쇠막대기 - (★)
10799번: 쇠막대기 galho = input() stack = [] total = 0 for i in range(len(galho)): if galho[i] == "(": #1 stack.append(galho[i]) elif galho[i] == ")": if galho[i-1] == "(": #2 total += len(stack) - 1 stack.pop() elif galho[i-1] == ")": #3 total += 1 stack.pop() print(total) #1 : i가 '(' 인 경우 stack에 삽입 #2 : galho[i]가 ')'이고 galho[i-1]는 '('인 경우는 레이저를 쏘는 경우이므로 스택에 쌓여있는 '(' 의 개수 -1 만큼 total에 추가 그리고 스택의 top..
[백준] 10828 파이썬(python) : 스택
10828번: 스택 import sys n = int(sys.stdin.readline()) stack = [] for i in range(n): command = sys.stdin.readline().split() if command[0] == "push": stack.append(command[1]) elif command[0] == "pop": if len(stack) == 0: print(-1) else: print(stack.pop()) elif command[0] == "top": if len(stack) == 0: print(-1) else: print(stack[-1]) elif command[0] == "size": print(len(stack)) elif command[0] == "em..
[백준] 8958 파이썬(python) : OX퀴즈
https://www.acmicpc.net/problem/8958 8958번: OX퀴즈 "OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수 www.acmicpc.net import sys t = int(sys.stdin.readline()) for _ in range(t): string = sys.stdin.readline().rstrip() cnt, res = 1, 0 if string[0] =='O': #1 res += 1 for i in range(1, len(string)): #2 if string[i] == 'O': #3 if str..