본문 바로가기

전체 글

(123)
1748번: 수 이어쓰기 1 (구현) - Tacademy www.acmicpc.net/problem/1748 1748번: 수 이어 쓰기 1 첫째 줄에 N(1≤N≤100,000,000)이 주어진다. www.acmicpc.net # 수 이어쓰기 # https://www.acmicpc.net/problem/1748 (구현) def get_length(n): # n = 120 => l = 3 l, ret = len(str(n)), 0 # ret = 1 * 9 + 2 * 90 for i in range(1, l): cnt = (10 ** i) - (10 ** (i - 1)) ret += i * cnt # ret += 3 * (120 - 99) cnt = n - ((10 ** (l - 1)) - 1) ret += l * cnt return ret n = int(input..
1-2. [구현] 재귀 재귀함수의 매개변수 선언순서에 규칙을 주자 => 입력, 출력, 내부변수 1. 팩토리얼 # 재귀... O(N) def fact(n): if n == 1: return 1 return n * fact(n - 1) print(fact(3)) 2. 최대공약수 # 재귀... O(logN) def gcd(a, b): if b == 0: return a return gcd(b, a % b) print(gcd(9, 6)) 3. 하노이탑 # 재귀... O(2^N) def hanoi(n, from_p, to_p, aux_p): if n == 1: print(f"{from_p} -> {to_p}") return hanoi(n - 1, from_p, aux_p, to_p) print(f"{from_p} -> {to_p}") ..
1-1. [구현] 반복 어디부터 어디까지 몇번 반복인지 체크하자 1. 합 구하기 # 반복... O(N) def sum_i(a): rst = 0 for i in range(len(a)): # 0부터 (N-1)까지... N번 반복 rst += a[i] return rst # 재귀... O(N) def sum_r(a): if len(a) == 0: return 0 return a[0] + sum_r(a[1:]) print(sum_i([5, 3, 6, 2, 10])) print(sum_r([5, 3, 6, 2, 10])) 2. 최대값 찾기 # 반복... O(N) def max_i(a): rst = -int(1e9) for i in range(len(a)): if a[i] > rst: rst = a[i] return rst # 재귀....