stack 16

[Python] 4873. 반복 문자 지우기

t = int(input()) for idx in range(1, t+1): s = input() answer = [] # 스택 이용할 리스트 for word in s: # word == 지금 answer에 추가할까 말까 고민하는 문자 # answer에 문자가 들어있고, 마지막 문자가 지금 붙이려는 문자와 같다면 중복이므로 pop으로 제거 if answer and answer[-1] == word: answer.pop() # answer가 비어있거나, 중복되지 않는 문자라면 추가 else: answer.append(word) print('#{} {}'.format(idx, len(answer)))

[Python] 4871. 그래프 경로

Stack 활용하여 푼 코드 t = int(input()) for idx in range(1, t+1): # 노드 개수 v, 간선개수 e v, e = map(int, input().split()) # 인접행렬 만들기 (인덱스 사용 편하게 하기 위해 range(v+1) 해주었음) arr = [[0 for _ in range(v+1)] for _ in range(v+1)] # 인접행렬에 방향성 표시하기 for _ in range(e): # 출발노드 d, 도착 노드 a d, a = map(int, input().split()) arr[d][a] = 1 # 한방향이므로 반대로도 설정해주면 (arr[a][d] == 1) 안됨 # 경로 존재 확인할 출발 노드 s, 도착 노드 g s, g = map(int, inpu..

[Python] 4866. 괄호 검사

# 괄호의 짝을 찾기 위해 딕셔너리 활용 b_dict = {'(':')', '{':'}', '[':']'} t = int(input()) for idx in range(1, t+1): code = input() stack = [] answer = 0 for c in code: # c가 여는 괄호 중 하나라면 stack에 추가 if c in b_dict.keys(): stack.append(c) # c가 닫는 괄호 중 하나라면 elif c in b_dict.values(): # stack이 비어있지 않다면 stack에서 괄호 빼오기 try: pop_b = stack.pop() # 만약 pop한 여는 괄호가 c(현재 닫는 괄호)와 짝이 아니라면 아예 답이 틀린거 -> 중단 if b_dict[pop_b] !=..

[Python] 2005. 파스칼의 삼각형

tc = int(input()) for idx in range(1, tc+1): n = int(input()) # 파스칼 삼각형의 크기 temp = [1] # 첫번째 줄 # 2차원 리스트로 만들지 않고 바로바로 프린트 해주기 위해 # 테스트케이스의 번호와 첫번째 줄을 먼저 프린트해준다. print('#{}'.format(idx)) print(*temp) # 두번째 줄부터 시작하기 때문에 삼각형 크기-1(n-1)까지 반복 for i in range(n-1): stack = [0] + temp + [0] # 맨 처음과 끝에 있는 1은 더할게 없으니 현재의 위 라인의 양 끝에 0을 붙여준다. temp = [] # 해당 라인의 숫자를 저장할 임시 리스트 # 여기서 pop()은 맨 마지막 원소를 뽑는다. # 파스..

[Python] 큰 수 만들기

def solution(number, k): answer = [number[0]] for num in number[1:] : while len(answer)>0 and answer[-1] 0 : answer.pop() k -= 1 answer.append(num) if k != 0 : answer = answer[:-k] return ''.join(answer) 풀이 1. answer에 값을 순서대로 삽입한다. 2. 들어오는 값이 answer에 있는 값보다 크다면 answer의 값을 빼주고 k에서 1을 빼준다. (반복) 3. k만큼 숫자를 빼주지 못했다면, 뒤에서부터 k만큼(남은 부분) 삭제해준다. * 처음에 while 대신 if를 썼었는데 그렇게 되면, test 3번 "4177..