알고리즘 78

[백준] 1874 스택수열 파이썬 풀이 (스택)

코드 num = int(input()) #원소가 몇 개 있는지 original_list = [] # 원래 주어지는 배열 for i in range(num): a = int(input()) #리스트의 원소들 original_list.append(a) # print(original_list) ordered_list = sorted(original_list) #오름차순 정렬한 배열 stack = [] origin_index = 0 #원래 배열과 비교하기 위한 변수 push_pop=[] #연산을 저장하는 배열 for index in range(len(ordered_list)): stack.append(ordered_list[index]) push_pop.append('+') for i in range(len(s..

[백준] 4949 균형잡힌 세상 파이썬 풀이 (스택)

코드 while True: string = input() if string == '.': break stack = [] check = True for i in string: if i == '(' or i == '[': #stack에 넣음 stack.append(i) elif i == ')': if stack and stack[-1] == '(': #stack이 안비었으면 stack.pop() else: check = False break elif i == ']': if stack and stack[-1] == '[': #stack이 안비었으면 stack.pop() else: check = False break if not stack and check: print('yes') else: print('no'..

[백준] 1010 다리 놓기 파이썬 풀이 (정수론 및 조합론)

코드 def factorial(n): num = 1 for i in range(1, n+1): num *=i return num test_case = int(input()) for i in range(test_case): n,m = map(int, input().split()) bridge = factorial(m)/( factorial(n)* factorial(m-n)) print(int(bridge)) 풀이 조합으로 풀면 됨 2021.06.21 - [알고리즘/백준 문제풀이] - [백준] 11050 이항계수 1 파이썬 풀이 (정수론 및 조합론) [백준] 11050 이항계수 1 파이썬 풀이 (정수론 및 조합론) 코드 import math N,K = map(int, input().split()) resul..

[백준] 1934 최소 공배수 파이썬 풀이 (정수론 및 조합론)

코드 num = int(input()) for i in range(num): a,b = map(int,input().split()) A,B = a,b while a!=0: b = b%a a,b = b,a # print(a,b) gcd = b lcm = A * B //b print(lcm) 풀이 2021.06.20 - [알고리즘/백준 문제풀이] - [백준] 2609 최대 공약수와 최소 공배수 파이썬 풀이 [백준] 2609 최대 공약수와 최소 공배수 파이썬 풀이 코드 A,B = map(int, input().split()) # 최대 공약수는 # 둘중에 작은 수와 큰수%작은수와의 최대공약수와 같다 # 작은 수가 0이 될때까지 반복한다. 그럼 큰 수가 최대 공약수이다. a,b = A,B while b!=0: a..

[백준] 10773 제로 파이썬 풀이 (스택)

코드 import sys num= int(sys.stdin.readline()) total = [] max = 0 for i in range(num): money = int(sys.stdin.readline()) if money > 0: total.append(money) max+=money else: max-=total[-1] total.pop() print(max) 풀이 0을 부르지 않으면 total 배열에 부른 수를 append하고 max(총 합)에 부른 수를 더한다 0을 부르면 total에서 마지막에 부른 수를 없앤다. 그리고 max에서도 빼준다.

[백준] 10828 스택 파이썬 풀이 (스택)

코드 import sys stack = [] num= int(sys.stdin.readline()) #input()을 쓰면 시간 초과 for i in range(num): order = sys.stdin.readline().split() #공백 기준으로 띄워서 배열로 들어감 if order[0] == 'push': stack.append(order[1]) elif order[0] == 'top': if len(stack)>0: print(stack[-1]) else: print(-1) elif order[0] == 'size': print(len(stack)) elif order[0] == 'pop': if len(stack)>0: print(stack[-1]) stack.pop(-1) else: pri..

[백준] 11729 하노이탑 이동 순서 파이썬 풀이 (재귀)

코드 def hanoi(disk, start, mid, end): if disk == 1: print(start, end) else: hanoi(disk - 1, start, end, mid) print(start, end) hanoi(disk - 1, mid, start, end) total_disk = int(input()) total_mvmt = 0 for disk in range(total_disk): total_mvmt = total_mvmt * 2 total_mvmt += 1 print(total_mvmt) hanoi(total_disk, 1, 2, 3) 풀이 하노이탑 옮기기의 원리이다 5개의 탑을 3번으로 옮기려면 일단 4개를 중간으로 옮겨놓고 5번을 3번으로 옮긴다음 중간에 있던 4개를 3..