본문 바로가기

카테고리.

(228)
카카오 비밀지도 def secretmap(n,arr1,arr2): map_A=[] map_B=[] for i in arr1: code='' for j in range(n): if i%2==1: code+='#' else: code+=' ' i=i//2 code=code[::-1] map_A.append(code) #print(map_A) for i in arr2: code='' for j in range(n): if i%2==1: code+='#' else: code+=' ' i=i//2 code=code[::-1] map_B.append(code) #print(map_B) final_map=[] for i in range(n): code='' for j in range(n): if map_A[i][j]=='#' or ..
자카드 유사도 + 카카오 문제 자카드 유사도는 두 문장을 각각의 집합으로 만든 뒤두 집합을 통해 유사도를 측정하는 알고리즘이다. 그림 출처 : https://lsjsj92.tistory.com/443 두 문장의 교집합 개수는 6개, 합집합 개수는 24개로 자카드 유사도는 0.25가 된다. 예제 : 두 집합의 유사도 구하기1 A={1,2,3} B= {2,3,4} J(AnB)={2,3}J(AUB)={1,2,3,4} J(A,B)= 2 / 4 = 0.5 예제 : 두 집합의 유사도 구하기2 A={FR,RA,AN,NC,CE} B= {FR,RE,EN,NC,CH} J(AnB)={FR,RC}J(AUB)={FR,RA,AN,NC,CE,RE,EN,CH} J(A,B)= 2 / 8 = 0.25 # 파이썬으로 집합 자료구조 만들기 a={1,2,3,4}b={2,..
LRU 알고리즘 + 카카오 문제 LRU 알고리즘이란 Oracle DATABASE의 메모리 관리를효율적으로 하기 위해 고안된 대표적인 알고리즘으로최신 데이터를 메모리에 유지시키고오래된 데이터는 메모리에서 내보내게 하는 알고리즘 예를 들어, SQL > select sal from emp where ename='scott'; 위 SQL 문장은 메모리에 정보가 올라와있다면 1초, -> cashe hit메모리에 정보가 없어 디스크에서 조회하면 5초가 걸린다. -> cashe miss (걸리는 시간은 예시일 뿐) 하지만 메모리 공간이 한정되어 있어, 무한히 데이터를 올릴 수 없다.따라서 오래된 데이터는 버리고 최신 데이터로 올린다. '최근에 내가 검색한 데이터는 다시 검색할 확률이 높을거야' 라고 가정한다. 예제 : 2017 카카오 블라인드 1차..
재귀함수 재귀 함수 : 반복문 + 스택 구조의 결합(나중에 들어간게 먼저 나오는 구조) 재귀 함수의 특징 : 재귀 함수는 함수 내에서 다시 자기 자신을 호출한 후그 함수가 끝날 때까지 함수 호출 이후의 명령문을 수행하지 않는다. 재귀 함수의 장점 :1. loop문을 별도로 작성하지 않아도 된다.2. 코드가 간결해진다. 123456789def hap(a,b): return (a+b)def gob(a,b): return (a*b)def hap_gob(a,b): k=hap(a,b) #5 m=gob(a,b) #6 return k+mprint(hap_gob(2,3)) #11 위처럼 파이썬은 함수 내에서 다른 함수를 불러오는 것이 가능하다.재귀 함수는 다른 함수가 아닌 자기 자신을 불러오는 것 # 재귀 함수를 통해 1까지의..
탐욕 알고리즘 머신러닝에서 의사결정 트리를 구현할 때 사용하는 알고리즘 의사결정 트리는 설명하기 쉽기 때문에 분석가들이 선호하는 알고리즘 중 하나이다. 매 순간마다 최선의 선택을 하며,가장 좋다고 생각되는 것만 선택한 것들로 최종적인 해답을 구하는 알고리즘 주의할 점은 전체를 고려하는게 아니라문제를 부분적으로 나누어,나누어진 문제에 대한 최적의 해답을 구하게끔 해야한다는 것 예제 : 14원의 잔돈을 줘야하는데, 잔돈의 종류가 10원, 7원, 1원이 있으면잔돈을 가장 빨리 줄 수 있는 방법은? 1234567891011coin=[10,7,1]coin=sorted(coin,reverse=True) # 큰 값을 맨 앞으로 오게끔 정렬def greedy(): num=int(input('잔돈을 입력하세요~ ')) for i in..
버블 정렬 12345678910a=[5,4,3,2,1,8,7,10]def bubble_sort(a): for i in range (len(a)-1): for j in range (len(a)-i-1): # 이미 정렬이 완료된 오른쪽은 제외 if a[j]>a[j+1]: temp=a[j+1] a[j+1]=a[j] a[j]=temp return aprint(bubble_sort(a)) 정렬이 가장 오래걸리는 경우는 제일 작은 수가 오른쪽 끝에 있을 때니까 ( 매 반복때마다 한칸씩 앞으로 옴 )실험해보고 싶으신 분은 제일 작은 수 0을 끝자리에 추가해보면 된다. 123456789101112#a=[5,4,3,2,1,8,7,10]a=[5,4,3,2,1,8,7,10,0]def bubble_sort(a): for i in ran..
이진 탐색 코드 1 1234567891011121314151617181920212223242526272829a=[1,7,11,12,14,23,33,47,51,64,67,77,139,672,871]num=int(input('검색할 숫자를 입력하세요 : '))cnt=0 # 검색 횟수 변수 선언 while(True): cnt+=1 # 검색 횟수 1씩 증가 import numpy as np a_n=np.array(a) if len(a)%2==1: # 리스트의 요소의 개수가 홀수면 np.median(a_n)하면 바로 나오지만 a_m=int(np.median(a_n)) else: # 짝수면 가운데 값 두 개를 더해서 반으로 나눈 값을 반환해서 줘서 리스트의 없는 중위값이 나와버림 a_m=a[len(a)//2] # 그래서 중위..
합성곱 연산 알고리즘 # 합성곱 연산 알고리즘 딥러닝의 필수 알고리즘 ( 퍼셉트론, 합성곱 연산 알고리즘 ) 이미지의 형상을 무시하지 않고, 이미지를 그대로 인공 신경망이학습할 수 있게 해준 수학 행렬 연산 원본 이미지는 학습되어야 하는 데이터이며,필터는 원본 이미지의 특징을 잡아내는데 사용되는 행렬이다. 이렇게 특징을 잡아서 feature map을 생성해서,원본 이미지의 형태를 이해하는 것을 합성곱 연산이라고 한다. 일단 행렬의 연산을 하려면 numpy을 사용해야 한다. numpy는 파이썬에서 기본적으로 지원하지 않는 배열(array) 혹은 행렬(matrix)의 계산을쉽게 해주는 라이브러리다.머신러닝에서 많이 사용하는 선형대수학에 관련된 수식을파이썬에서도 쉽게 프로그래밍할 수 있게 해준다. 예제 : 두 행렬의 덧셈 연산하기..