파이썬72 알고리즘 - 재귀 알고리즘(1) 재귀는 어떠한 작업을 할 때, 자기 자신을 포함 및 사용하는 경우를 말합니다. 재귀를 사용하는 대표적인 예인 팩토리얼 문제를 보겠습니다. def factorial(n: int): if n > 0: return n * factorial(n-1) else: return 1 if __name__ == '__main__': n = int(input('출력할 팩토리얼 값을 입력: ')) print(f'{n}의 팩토리얼은 {factorial(n)}입니다.') 만약 3의 팩토리얼 값을 구한다고 했을 때 factorial(3)을 호출하면 3 * factorial(2)을 반환하고 factorial(2)는 다시 factorial(1)을, factorial(0)일 때는 1을 반환하게 됩니다. 그럼 factorial(1) -.. 2020. 11. 16. 백준 - 5430번 문제 https://www.acmicpc.net/problem/5430 5430번: AC 각 테스트 케이스에 대해서, 입력으로 주어진 정수 배열에 함수를 수행한 결과를 출력한다. 만약, 에러가 발생한 경우에는 error를 출력한다. www.acmicpc.net 코드 import sys def result(p, lst): l, r = 0, len(lst) reverse = False if r < p.count('D'): return 'error' for i in p: if i == 'R': reverse = not reverse elif i == 'D': if reverse: r -= 1 else: l += 1 if len(lst) == 0: return '[]' else: lst = lst[l:r] if.. 2020. 11. 13. 알고리즘 - 큐(queue) 큐는 스택과 같이 데이터를 임시 저장하는 자료구조입니다. 스택과 다른점은 스택은 마지막에 넣은 데이터가 먼저 나오지만 큐는 먼저 넣은 데이터가 먼저 나옵니다. 큐에 데이터를 추가하는 작업은 enqueue, 데이터를 꺼내는 작업은 dequeue라고 합니다. 또한 맨 앞의 원소를 front, 맨 끝의 원소를 rear라고 합니다. 위 큐에서 115를 빼면 나머지 위 숫자들은 한칸씩 앞으로 당겨져야 합니다. 그렇게 되면 시간 복잡도 O(n)이 되고 데이터를 꺼낼 때마다 이렇게 처리하면 효율성이 떨어지게 됩니다. 이럴 때 사용하는 자료구조가 ring buffer입니다. 왼쪽이 링버퍼고 오른쪽은 링 버퍼를 펼쳐 놓은 상태입니다. 6번 인덱스가 맨 앞이고, 2번 인덱스가 맨 뒤인 상태입니다. 링버퍼에 24가 추가되면.. 2020. 11. 12. 백준 - 4949번 문제 https://www.acmicpc.net/problem/4949 4949번: 균형잡힌 세상 하나 또는 여러줄에 걸쳐서 문자열이 주어진다. 각 문자열은 영문 알파벳, 공백, 소괄호("( )") 대괄호("[ ]")등으로 이루어져 있으며, 길이는 100글자보다 작거나 같다. 입력의 종료조건으로 맨 마 www.acmicpc.net 코드 import sys class Stack: def __init__(self): self.stk = [] def append(self, value): self.stk.append(value) def pop(self): return self.stk.pop() def peek(self): if len(self.stk) 2020. 11. 9. 이전 1 2 3 4 5 6 7 8 ··· 18 다음