본문 바로가기
728x90

전체 글426

Baekjoon Training #1269 #1269 x,y=map(int,input().split()) a=set(map(int,input().split())) b=set(map(int,input().split())) print(len(a-b)+len(b-a)) 집합 연산을 손쉽게 진행할 수 있는 set를 이용한 문제이다. 숫자들을 map과 set을 이용하여 set의 원소로 받아온다. list의 원소의 수를 구해주는 len() 함수를 set에도 이용할 수 있으므로 차집합의 원소의 수를 구하고 더해줘서 출력하였다. 2022. 8. 10.
Baekjoon Training #1427 #1427 number = int(input()) a = [] for i in str(number): a.append(int(i)) a.sort(reverse=True) for x in a: print(x, end="") 숫자열을 입력을 받고 append함수를 반복문에서 이용하여 숫자열을 숫자 하나 단위로 쪼개서 리스트에 담아둔다. 그 후에 sort()함수를 이용하는데 내림차순의 결과를 원하므로 옵션으로 reverse=True를 이용한다. print(리스트명)을 하면 [4,3,2,1]이런 형태로 출력이되므로 반복문을 이용하여 원소를 하나씩 출력해준다. print(*리스트명)을 하면 대괄호와 콤마는 없어지지만 띄어쓰기가 존재하여 문제에서 원하는 답과 다르므로 반복문을 이용하였다. 2022. 8. 9.
Coursera-Supervised Machine Learning: Regression and Classification (5) Visualizing the cost function cost function J는 국 그릇 모양으로 최적 값을 기준으로 전부 상승하는 경향성을 가진 함수 모양이다. Examples w가 -0.15이고 b가 800인 경우의 모습이다. 상당히 부정확한 model임을 알 수 있다. 여전히 부정확한 model이지만 이전 model보다는 낫다. w=0, b=360인 model이다. J가 최소값이 되는 적절한 model로 w=0.13, b=71인 model이다. 2022. 8. 9.
Baekjoon Training #25305 #25305 n,k=map(int,input().split()) num_list=list(map(int,input().split())) num_list.sort(reverse=True) print(num_list[k-1]) n,k값을 입력받고 점수 리스트를 리스트 자료형으로 받는다. 리스트 자료형으로 받은 이유는 sort함수를 쓰기 위해서이다. list.sort()함수는 리스트의 원소들을 오름차순으로 정렬해주는 것이 디폴트 값이다. option을 reverse=True로 설정하여 내림차순으로 바꿔줄 수 있다. reverse=False로 설정하거나 그냥 비워두면 오름차순으로 정렬이된다. 내림차순으로 정렬을 하고 리스트의 인덱스를 지정하여 출력을 한다. 이때 첫번째 인덱스는 0이므로 k-1번째 인덱스를 출력.. 2022. 8. 8.
Coursera-Supervised Machine Learning: Regression and Classification (4) Cost function formula 이전 시간까지 공부했듯 features와 그와 매칭되는 target을 통해 model을 만든다. 그러한 model의 function은 다음과 같이 작성할 수 있다. w와 b의 값을 추정값과 실제값이 가깝도록 결정해야한다. 이러한 결정을 돕기위해 cost function fomula를 이용한다. Cost function은 다음과 같다. Cost function intuition 우선 그래프의 경향성과는 관계없는 b를 0으로 가정하여 단순화를 해본다. 우선 (x,y) data set이 (1,1), (2,2), (3,3)인 단순한 경우를 보면 w=1을 통해 cost function 식을 만들고 모든 경우에 오차가 0임을 알 수 있다. 이를 식과 그래프를 통해 관찰한다. .. 2022. 8. 7.
Baekjoon Training #14425 #14425 import sys N, M = map(int, input().split()) words = dict() cnt = 0 for i in range(N): a = sys.stdin.readline() words[a] = True for j in range(M): b = sys.stdin.readline() if b in words.keys(): cnt+=1 print(cnt) sys.stdin.readline() 함수를 이용하기 위해 sys모듈을 import해왔다. dictionary 자료형을 이용하여 문자열을 비교한다. for문을 이용해 문자를 입력받고 if문에서 dict.keys()를 이용하여 비교를 진행하여 counting을 하였다. 2022. 8. 6.
Baekjoon Training #2798 #2798 n, m = map(int, input().split()) a = list(map(int, input().split())) b = len(a) sum = 0 for i in range(0, b - 2): for j in range(i + 1, b - 1): for k in range(j + 1, b): if a[i] + a[j] + a[k] > m: continue else: sum = max(sum, a[i] + a[j] + a[k]) print(sum) 우선 map을 이용하여 두개의 수와 숫자 리스트를 받는다. list a의 길이를 b에 넣어주고 3중 for문을 이용하여 3개의 숫자 세트를 전수조사한다. 마지막 for문 에서 if else문을 이용하여 지정된 숫자를 넘으면 for문을 이어서.. 2022. 7. 30.
Baekjoon Training #10870 #10870 a = int(input()) num_list = [0,1] for i in range(2, a+1): num = num_list[i-1] + num_list[i-2] num_list.append(num) print(num_list[num]) 우선 친숙한 for문을 이용하여 코드를 작성해 보았다. 0,1이 들어있는 num_list를 만들고 for문을 이용하여 입력한 번호 a에 따라 a-2인덱스의 숫자와 a-1인덱스의 숫자를 더하여 num을 num_list에 append해주어 피보나치 수열을 구현하였다. 하지만 이 문제의 의도는 재귀함수를 이용하는 것이어서 다른 방법을 고안하였다. def fibonacci(a): if a 2022. 7. 29.
Coursera-Supervised Machine Learning: Regression and Classification (3) Linear regression model 주어진 data를 직선적으로 분석하여 예측을 진행하는 model이다. 위와같이 data들의 경향성을 선형적으로 분석하여 분석하는 방법이다. Terminology Training set: Data used to train the model Notation: x = "input" variable feature y = "output" variable, "target" variable m = number of training example features와 targets이 매칭이 되어있는 training set을 통해 학습하여 model f를 만들어내고 해당 model에 x라는 feature을 입력하면 예측값인 y-hat이 출력이 된다. Univariate linear.. 2022. 7. 29.
Baekjoon Training #1978 #1978 n = int(input()) nums = map(int, input().split()) prime_num = 0 for num in nums: cnt = 0 if num > 1 : for i in range(2, num): if num % i == 0: cnt = 1 if cnt == 0: prime_num += 1 print(prime_num) 첫째줄에서 수들의 개수 n을 입력받았다. 처음에는 이를 이용하여 for문의 반복 횟수를 정하려 했으나 for num in nums 꼴을 이용하여 굳이 n을 이용하지 않고 nums의 숫자들을 순차적으로 이용하여 더 쉽게 풀어냈다. cnt는 for문이 시작할때마다 0으로 초기화를 해주고 nums의 모든 숫자들을 2부터 각 숫자까지 (nums가 4, 7,.. 2022. 7. 24.
Google ML crash course (3) Reducing Loss Loss를 줄이기위해 Gradient descent 과정을 통해 algorithm을 수정한다. 이때 learning rate가 너무 작으면 loss가 최소인점을 찾는데까지 너무 많은 step을 밟아야한고 learning rate가 너무 크면 정확도가 떨어져서 overshooting되어 loss가 최소인점을 크게 벗어날 수 있다. Course에서 제공된 프로그램을 통하여 Learning rate가 0.05일때, 0.6일때, 0.1일때를 각각 실행시켜보면서 직접확인해 보았다. 2022. 7. 23.
Coursera-Supervised Machine Learning: Regression and Classification (2) Unsupervised learning Find something interesting in unlabeled data. Right examples를 통해 훈련을 시키는 것이아니라 unlabeled data를 자체적으로 clustering하는 것이다. Clustering algorithm Clustering algorithm은 말그대로 정보들을 군집화하여 의미있는 data를 구해내는 것이다. 다음과 같이 구글 뉴스에서 연관성이 있는 기사들을 찾아내는 것도 같은 원리이다. 또한 DNA microarray 기술에서도 각각의 개체와 그들의 특징을 나타내는 유전자를 군집화하여 표현하였음을 알 수 있다. 소비자 분석에서도 흔히 쓰인다. 어떤 물건을 구매하는지 어떤 뉴스를 읽는지와 같은 다양한 성향을 토대로 소비자.. 2022. 7. 23.
728x90