전체 글
-
정렬백준 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..
-
GMM (Gaussian Mixture Models)기계학습이론과실습 2022. 6. 14. 08:03
GMM은 여러 개의 다변량 정규분포를 이용해서 데이터가 생성되었다고 가정한다. 여기서 분포의 개수 K는 사용자에 의해 설정되는 hyper-parameter이며 분포의 개수가 곧 군집의 개수이다. 독립변수의 수 = M, 찾고자 하는 군집의 수 = K라고 가정할 경우, 특정 관측치의 확률은 다음과 같다. 파이값은 mixing coefficient(weight)라고도 불리며 관측치 x_i가 k번째 정규분포를 이용해서 생성되었을 확률을 나타낸다. 이때, mixing coefficient를 나타내기 위해서 z라고 하는 잠재변수를 사용해서 표현한다. z_i는 i번째 관측치가 생성될 때 사용된 분포를 나타내는 변수이다. 다변량 정규분포의 μ = (μ_1, μ_2, ..., μ_M)이며 Σ는 M개의 변수들에 대한 공분..
-
SVM (Support Vector Machines)기계학습이론과실습 2022. 5. 30. 12:08
하이퍼플레인 Label에 따라 벡터들을 구분하기 위한 면(선) n 차원 공간에 대한 하이퍼플레인: b0 + b1x1 + ... + bnxn = 0 서포트 벡터 벡터들을 구분하는 하이퍼플레인과 가장 가까이 있는 벡터 마진(margin) 하이퍼플레인과 서포트 벡터 사이의 거리 * 목표: margin을 최대화하는 b0, b1 ... bn 값을 찾는 것 1. 점과 선 사이의 거리를 찾는 공식을 알아보자 * 법선 벡터(normal vector)란 한 평면이나 직선에 대해 수직인 벡터를 의미한다. * ax + by = c의 법선 벡터 N은 (a, b) ** 법선 벡터를 활용하여 점(x0, y0)과 직선(ax + by + c = 0)의 거리를 구하면 absolute(ax0 + by0 + c) / root(a^2 + ..
-
재귀백준 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..