파이썬 알고리즘
Python 백준 1874 스택수열 알고리즘
Python 백준 1874 스택수열 알고리즘 www.acmicpc.net/problem/1874 1874번: 스택 수열 1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다. www.acmicpc.net n = int(input()) # 처음 입력하는 n값 # 이 수에 따라 총 몇개의 원소를 가진 수열인지 정해짐 s = [] # 수열을 판단할 임시 리스트 op = [] # 나중에 출력할 +, - 리스트 count = 1 temp = True for i in range(n): num = ..
Python 백준 4949 균형잡힌세상 / 스택 알고리즘
Python 백준 4949 균형잡힌세상 / 스택 알고리즘 https://www.acmicpc.net/problem/4949 4949번: 균형잡힌 세상 하나 또는 여러줄에 걸쳐서 문자열이 주어진다. 각 문자열은 영문 알파벳, 공백, 소괄호("( )") 대괄호("[ ]")등으로 이루어져 있으며, 길이는 100글자보다 작거나 같다. 입력의 종료조건으로 맨 마 www.acmicpc.net while True: bracket = input() if bracket == ".": break bracket_stack = [] answer = True for j in bracket: if j == "(" or j =="[": bracket_stack.append(j) elif j == ")": if len(bracket..
Python 백준 2805 나무자르기 / 이진탐색 알고리즘
Python 백준 2805 나무자르기 / 이진탐색 알고리즘 https://www.acmicpc.net/problem/2805 2805번: 나무 자르기 첫째 줄에 나무의 수 N과 상근이가 집으로 가져가려고 하는 나무의 길이 M이 주어진다. (1 ≤ N ≤ 1,000,000, 1 ≤ M ≤ 2,000,000,000) 둘째 줄에는 나무의 높이가 주어진다. 나무의 높이의 합은 항상 M보 www.acmicpc.net N, M = map(int, input().split()) tree = list(map(int, input().split())) start, end = 1, max(tree) # 이분탐색 검색 범위 설정 # 1을 시작, end를 나무 중 긴 길이 # 원하는 나무 높이 while start = mid:..
Python 백준 11651 좌표정렬하기2 / 파이썬 알고리즘
Python 백준 11651 좌표정렬하기2 / 파이썬 알고리즘 https://www.acmicpc.net/problem/11651 11651번: 좌표 정렬하기 2 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. www.acmicpc.net import sys input = sys.stdin.readline n = int(input()) array = [] for i in range(n): [x, y] = map(int, input().split()) array.append([y, x]) s_array = sorte..
Python 재귀함수 알고리즘 - 백준 11729 하노이탑
Python 재귀함수 알고리즘 - 백준 11729 하노이탑 www.acmicpc.net/problem/11729 11729번: 하노이 탑 이동 순서 세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰 순서대로 쌓여있다. 이제 수도승들이 다음 규칙에 따라 첫 번째 장대에서 세 번째 장대로 www.acmicpc.net def move(n, start, end): if n == 1: print(start, end) return move(n - 1, start, 6 - start - end) # 시작부분에서 저장하는 곳으로 다 옮긴 것 print(start, end) # 시작부분에서 끝부분으로 이동 move(n - 1, 6 - start - end, end)..