전체 글 썸네일형 리스트형 알고리즘 기초 1/2 203-자료구조(참고): 후위 표기식2 후위 표기식2(python 1935)변수의 개수를 미리 받는 이유는 변수의 값을 따로 저장해놓을 리스트를 먼저 선언하기 위함이다또한 후위 연산은 stack의 pop을 활용하여 계산한다소수점 2자리까지 표현하는건 %.2f 함수를 활용한다N = int(input())s = str(input())num = [0] * Npost_stack = []for i in range(N): num[i] = int(input())for i in s: if i.isalnum(): post_stack.append(num[ord(i) - ord('A')]) else: n2 = post_stack.pop() n1 = post_stack.pop() if i == '+.. 더보기 알고리즘 기초 1/2 201-자료구조(연습): 오등큰수 오큰등수(Python 17299)이전에 풀었던 오큰수랑 매우 흡사한 문제.이전 문제 해답을 그대로 가져와서 수정하고 날먹함그래서 틀렸다..첫 풀이import sysN = int(input())A = list(map(int, sys.stdin.readline().split()))answer = [-1] * Nstack = []stack.append(0)for i in range(1, N): while stack and A.count(A[stack[-1]]) 문제의 조건을 큰수가 아니라 횟수 세어주는걸로 바꿔서 제출했더니 시간초과가 발생했다.해결은 counter을 활용하는것import sysfrom collections import CounterN = int(input())A = list(map(int.. 더보기 알고리즘 기초 1/2 201-자료구조(연습): 오큰수 오큰수(python 17298)첫 풀이import sysN = int(input())A = sys.stdin.readline().split()result = []l = len(A)for i in range(l): a = A.pop(i) if a >= min(A): result.append('-1') else: for j in A: if a 생각보단 쉽다고 생각했으나, 역시나 시간초과로 오답.for문을 2중으로 써서 O(N&2)의 시간복잡도라서 그런듯하다정답풀이import sysN = int(input())A = list(map(int, sys.stdin.readline().split()))answer = [-1] * Nstack = []stac.. 더보기 알고리즘 기초 1/2 201-자료구조(연습): 쇠막대기 쇠막대기(python 10799)문제 해석에 많은 시간이 걸렸다.레이저가 나올 때, 그동안 여는 괄호가 나온 만큼 스택에 추가된다는 것을 알면 쉬운 문제였음스택에 '('를 쌓아두고 레이저를 만나면 스택의 길이만큼 값을 저장해주고, ')'가 나오면 짤린 쇠막대가 1개 추가되어 값을 1더해줌import syss = sys.stdin.readline()s = s.replace('()', 'l')index = 0stack = []result = 0for i in s: if i == '(': stack.append(i) elif i == 'l' and len(stack) > 0: result = result + len(stack) elif i == ')' and len(s.. 더보기 알고리즘 기초 1/2 201-자료구조(연습): 단어 뒤집기2 # 단어 뒤집기(python 17413)접근법을 찾지못하여 헤멘 문제.부분을 처리하는것에 어려움을 특히 겪엇다.이를 인덱스 변수를 미리 지정하여 괄호를 만나면 그냥 인덱스를 증가시키는 방식으로 해결해야했던거였음또한 "괄호를 만날때까지"를 코드로 구현하는것에도 어려움을 겪었음.이는 while문을 사용하면 해결되는 간단한거였다.import sysS = list(sys.stdin.readline().rstrip())index = 0start = 0while index ': index = index + 1 index = index + 1 elif S[index].isalnum(): start = index while index 더보기 알고리즘 기초 1/2 200-자료구조: 덱 DequeDeque는 "double-ended que"의 약자로 양방향에서 데이터를 처리할 수 있는 queue형의 자료구조.Deque의 경우 추가(append)와 꺼내기(pop) 연산을 O(1)의 속도로 지원하며, 길이는 임의로 커질 수 있음.다음과 같이 양뱡향에서 요소들을 추가, 삭제할 수 있는 큐이다.이러한 Deque는 list보다 빠르고, Thred 환경에서 안전하다.덱(python 10866)간단했던 문제.push구현에서 앞쪽엔 insert를 활용하고, 뒤쪽엔 append를 활용했다.import sysN = int(input())deque = []for i in range(N): s = sys.stdin.readline().split() if s[0] == 'push_front': .. 더보기 알고리즘 기초 1/2 200-자료구조: 요세푸스 문제 요세푸스 문제(python 1158)상당히 헤멘 문제.스택을 활용하여 지울 인덱스를 변수로 선언해서,이를 계산해나가면서 result 리스트를 완성시킴.N, K = map(int, input().split())stack = [i for i in range(1, N + 1)]result = []num = 0for i in range(N): num = num + K - 1 if num >= len(stack): num = num%len(stack) result.append(str(stack.pop(num)))print("", sep='')stack = [i for i in range(1, N + 1)]와 같은 표현을 익히자난 인덱스 계산을 해서 저장해두는 변수 없이 진행하였음. 그.. 더보기 알고리즘 기초 1/2 200-자료구조: 큐 큐큐는 선입선출(FIFO, First In First Out)방식을 따르는 자료구조.한쪽 끝에서만 데이터가 추가되고, 반대쪽 끝에서만 데이터가 제거됨.리스트를 활용한 구현 예시class Queue: def __init__(self): self.queue = [] def enqueue(self, item): self.queue.append(item) # 데이터 추가 def dequeue(self): if not self.is_empty(): return self.queue.pop(0) # 가장 앞의 데이터 제거 else: return "Queue is empty!" def is_empty(se.. 더보기 이전 1 2 3 4 5 다음