재귀 단계 (acmicpc.net) 재귀함수를 다뤄 봅시다. 재귀 단계 피보나치 수 역시 단순 for문으로도 구할 수 있지만, 학습을 위해 재귀를 써 봅시다. www.acmicpc.net ■ 백준 27433 팩토리얼 2_브론즈 5 - 팩토리얼은 단순 for문으로도 구할 수 있지만, 학습을 위해 재귀를 써 봅시다. def factorial(n): if n > 1: return n * factorial(n-1) else: return 1 print(factorial(int(input()))) ■ 백준 10870 피보나치 수 5_브론즈 2 - 피보나치 수 역시 단순 for문으로도 구할 수 있지만, 학습을 위해 재귀를 써 봅시다. def fibonacci(n): if n
■ 백준 1037 약수_브론즈 1 - 1과 N 빼고 다 주어졌을 때 N을 찾는 문제 n = int(input()) n_li = sorted(list(map(int, input().split()))) print(n_li[0]*n_li[-1]) ■ 백준 25192 인사성 밝은 곰곰이_실버 4 - 👋🐻 # [Psuedo code] # 엔터를 받고 난 뒤에 이름들은 곰곰티콘을 받음 # 엔터를 받을 때 새로운 딕셔너리 생성? # import sys # gomgom = {} # for i in range(int(input())): # name = sys.stdin.readline().rstrip() # if name in gomgom: # if name != "ENTER" and gomgom['ENTER'] < 2..
스택, 큐, 덱 단계 (acmicpc.net) 스택, 큐, 덱 자료구조를 사용하여 문제를 해결해 봅시다. 스택, 큐, 덱 단계 주어진 문자열이 올바른 괄호열인지 판단하는 문제 www.acmicpc.net ■ 백준 28278 스택 2_실버 4 - 스택의 개념을 익히고 실습하는 문제 # import sys # stk = [] # for _ in range(int(input())): # m = list(map(int, sys.stdin.readline().split())) # if len(m) == 1: # if m[0] == 2: # print(stk.pop() if stk != [] else -1) # elif m[0] == 3: # print(len(stk)) # elif m[0] == 4: # prin..
배열의 원소를 순서대로 나열하는 알고리즘을 배워 봅시다. 정렬 단계 (acmicpc.net) 정렬 단계 시간 복잡도가 O(nlogn)인 정렬 알고리즘으로 풀 수 있습니다. 예를 들면 병합 정렬, 힙 정렬 등이 있지만, 어려운 알고리즘이므로 지금은 언어에 내장된 정렬 함수를 쓰는 것을 추천드립니다. www.acmicpc.net ■ 백준 2750 수 정렬하기_브론즈 2 - 시간 복잡도가 O(n²)인 정렬 알고리즘으로 풀 수 있습니다. 예를 들면 삽입 정렬, 거품 정렬 등이 있습니다. import sys arr = [] idx = 0 for _ in range(int(input())): n = int(sys.stdin.readline()) for i in range(len(arr)): if n > arr[i]..
브루트 포스 단계 (acmicpc.net) 가장 간단한 알고리즘인, 모든 경우의 수를 검사하는 브루트 포스 알고리즘을 배워 봅시다. 브루트 포스 단계 한때는 이 문제가 "기본 수학 1" 단계에 있었지만, 사실 브루트 포스로 푸는 게 더 쉽습니다. www.acmicpc.net ■ 백준 2798 블랙잭_브론즈 2 (복습) # def combination(arr, r): # arr = sorted(arr) # # def generate(chosen): # global max, m # if len(chosen) == r: # if max < sum(chosen)
조합론 단계 (acmicpc.net) 조합론 단계 이항 계수는 N개의 물건 중 K개를 순서 없이 고르는 경우의 수와 같습니다. 이것도 조합론에서 자주 만나게 될 것입니다. www.acmicpc.net ■ 백준 15439 베라의 패션_브론즈 4 n = int(input()) print(n**2-n) ■ 백준 24723 녹색거탑_브론즈 4 print(2**int(input())) ■ 백준 10872 팩토리얼_브론즈 5 ans = 1 for i in range(1, int(input())+1): ans *= i print(ans) ■ 백준 11050 이항계수 1_브론즈 1 (복습) 이항계수 참고: https://shoark7.github.io/programming/algorithm/3-ways-to-get-b..