백준
-
백준 6086번: 최대 유량 #파이썬백준 2023. 10. 23. 22:18
구글에서 해당 문제를 검색해보면 대부분 에드몬드 카프 알고리즘에 대해 설명하고 있습니다. 하지만 에드몬드 카프 알고리즘으로 해당 문제를 풀려고 하면 상당히 혼란스러운데, 사실 에드몬드 카프 알고리즘이 최적해가 아니기 때문입니다. 게다가 파이썬으로 설명한 사람도 매우 적어서 Java나 C++ 코드가 어려운 사람은 도움을 받기 힘들어 보였습니다. 그래서 작성하는 풀이법입니다. 아이디어 1. 직렬 연결 시 유량의 최소값만큼 흘려보낼 수 있다. 2. 병렬 연결 시 유량의 합만큼 흘려보낼 수 있다. A에서 Z에 도달할 수 있는 방법들을 찾고, 각 방법에서 흘려보낼 수 있는 유량을 찾고, 각 유량만큼 계속 더한 값이 정답이다. 예제 제공된 예제를 조금만 변경해봅시다. (A B 3 --> A B 5, B Z 6 ->..
-
정렬백준 2022. 7. 27. 17:30
파이썬에서 제공하는 정렬함수로는 sort, sorted가 있다. list.sort() list2 = sorted(list) sort(key=len, reverse=True) #2 input을 사용할 경우 시간 및 메모리 초과가 나와 sys.stdin.readline을 활용하였다. import sys size = int(input()) l = list() for i in range(size): k = int(sys.stdin.readline()) l.append(k) l2 = sorted(l) for i in l2: print(i) #3 카운팅 정렬을 활용한다. size = int(input()) arr = [] for i in range(size): arr.append(int(input())) count..
-
재귀백준 2022. 5. 24. 18:32
#1 팩토리얼 n = int(input()) b = 1 def fac(n, b): b = b * n if n == 1: return b else: n = n-1 return fac(n, b) if n == 0: print(1) else: print(fac(n, b)) #3 재귀함수가 뭔가요? print('어느 한 컴퓨터공학과 학생이 유명한 교수님을 찾아가 물었다.') def question(n, a): a = a+1 print("____"*a, '\"재귀함수가 뭔가요?\"', sep='') print("____"*a, '\"잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어.', sep='') print("____"*a, '마을 사람들은 모두 그 선인에게 수많은 질문을 했고,..
-
기본 수학 1, 2백준 2022. 5. 18. 22:13
#4 import math a, b, v = map(int, input().split()) m = a-b n = v-a k = math.ceil(n/m) print(k+1) #6 n = int(input()) for i in range(n): a = int(input()) b = int(input()) ans = 0 l = [] for j in range(1, b+1): ans = j l.append(ans) for n in range(a): ans = 0 for k in range(b): ans = ans + l[k] l[k] = ans ans = 0 print(l[b-1]) #3 소인수분해 n = int(input()) ans = [] def fac(n, ans): for i in range(2, n..
-
문자열백준 2022. 5. 18. 22:08
#1 print(ord(input())) #2 iteration = int(input()) content = input() l = list(content) n = len(l) ans = 0 for i in range(n): ans = ans + int(l[i]) print(ans) #3 content = input() l = list(content) k = [] for i in range(ord('a'), ord('z')+1): try: k.append(l.index(chr(i))) continue except: ValueError k.append(-1) for i in range(0, 26): print(k[i], end=' ') #4 n = int(input()) for i in range(n): a..
-
함수백준 2022. 5. 18. 21:55
#1 def solve(a): ans = 0 ans = sum(a) return ans #2 def self_number(a): a_temp = a a_digit_total = 0 while a // 10 > 0: a_digit = a % 10 a_digit_total = a_digit_total + a_digit a = a // 10 self_num = a_temp + a_digit_total + a return self_num l = [] for i in range(1, 10000): self_num = self_number(i) l.append(self_num) for i in range(1,10001): if i not in l: print(i) #3 def one_number(a): if a 0..
-
1차원 배열백준 2022. 5. 18. 21:25
#1 num = int(input()) l = list(map(int, input().split())) l.sort() print(l[0], l[num-1]) #2 list1 = [] n = 9 for i in range(n): list1.append(int(input())) digit = 0 for i in range(0, n-1): if list1[i+1] > list1[digit]: digit = i+1 print(list1[digit]) print(digit+1) #3 A = int(input()) B = int(input()) C = int(input()) ans = A * B * C num = len(str(ans)) list1 = [] division = 1 for i in range(num..