분류 전체보기(76)
-
[Day 4] 경사하강법
인공지능에서의 미분 : 변수의 따른 함수값의 변화를 측정하기 위한 도구 / 최적화에서 많이 사용한다. import sympy as sym from sympy.abc import x f_x = x**2 + 2x + 1 sys.diff(sym.poly(f_x), x) 이렇게 sympy를 이용하여 간단히 미분값을 구할 수 있다. (sys.diff 이용) x좌표에서 f'(x)를 빼는 것을 gradient descent 라 하며, 극소값의 위치를 구할 때 사용한다. *** 경사하강법을 통해 극값에 도달하면 움직임을 멈춘다 *** 더보기 알고리즘 분석 while(abs(gradient) > epslion): ## gradient가 앱실론보다 작아지면 while문을 종료 value = value - learning_..
2021.08.05 -
[Day 3] 파이썬의 자료구조
파이썬의 기본 데이터 구조 스택과 큐 스택(stack) : 늦게 들어온(push) 데이터가 먼저 나간(pop)다 (LIFO) / push = append 큐(queue) : 먼저 들어온(append) 데이터가 먼저 나간(pop(0))다 (FIFO) 튜플과 집합 튜플(tuple) : 값의 변경이 불가능한 리스트(static 이라고 생각하면 될듯) / () 로 선언 및 사용 집합(set) : 값을 순서없이(unordered) 저장 + 중복 허용 안함(C++의 unordered_set과 동일) 딕셔너리 : 데이터를 저장 할때 구분 값과 같이 저장(C++의 map과 비슷한듯?) / key : value deque 장점 1: list에 비해 효율적이고 빠른 자료 저장 방식 장점 2: linked list의 특성을..
2021.08.04 -
[Day 2] 파이썬의 String
▷ 문자열 string은 1바이트 크기로 한 글자씩 메모리 공간이 할당된다. ex) string = s | t | r | i | n | g | 정수형 타입 중 long형은 C++와는 다르게 크기가 무제한이고, 표현범위 또한 무제한이다. 내가 생각하는 문자열의 가장 중요한 특징 >>> list(배열)와 같은 형태로 데이터를 처리한다. ex) s = abc 는 s[0] = a, s[1] = b, s[2] = c 로 표현가능. 문자열 슬라이싱 전 범위 = s[ : ] 지정 범위 = s[0 : 7] (0번째부터 6까지)/ s[-1 : ] (-1번째부터 끝까지) 특정 범위 = s[ : : 2 ] (전범위를 2칸단위로) 문자열의 중요하고 기본적인 함수들 (외워두면 편하다) len(s) = 문자열 개수 반환 s.up..
2021.08.03 -
네이버 부스트캠프 ai tech 2기 최종합격 & 코딩테스트 후기
드디어 내 노력의 첫 결실이 어제 맺어졌다. 네이버 부캠 2차 코테 결과가 나왔기 때문이다. 합격!! 그래서 오늘은 약 한달간 진행된 부스트캠프 ai tech 모집과정 및 후기에 대해서 포스팅 해보려고 한다. 1. 서류(자소서) 특이하게 서류 통과자가 1차 코딩테스트를 보는것이 아니라, 서류와 코테를 동시에 평가하였다. 즉, 서류를 내면 1차 코테를 볼 수 있게 해줬다는 것! 여러분들이 궁금해하는 자소서 내용은, AI 엔지니어가 되고 싶은이유, 하고싶은일 등이 질문으로 나왔고 내 미래와 내 과거의 노력들을 적었던 것 같다. 그리고 막연하게 AI 에 대해서 쓰는 것보단 그중에서 더 집중하고 싶은 분야를 찝어서 적는 것도 좋은 방법인 것 같다. 내 경우 NLP(자연어처리)를 위해서 지원했다라는 형식으로 글을..
2021.07.10 -
[그리디] 프로그래머스 "구명보트"
https://programmers.co.kr/learn/courses/30/lessons/42885 코딩테스트 연습 - 구명보트 무인도에 갇힌 사람들을 구명보트를 이용하여 구출하려고 합니다. 구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없고, 무게 제한도 있습니다. 예를 들어, 사람들의 몸무게가 [70kg, 50kg, 80kg, 5 programmers.co.kr 수행시간 : 30분 / 난이도 : 레벨 2 얼핏보면 일반적인 투포인터 문제라고 생각할 수 있다. 하지만 처음 로직을 짤 때, 문제에서 요구하는 그리디적인 로직이 필요하다. 우선, 소팅을 통해 가장 작은값부터 큰값까지 정렬을 한다. 처음 로직을 짰을때는, 정렬 후 가장 작은값부터 비교해가면서 i번째 + (i+1)번째 의 값이 limit를..
2021.06.27 -
[스택&구현] 프로그래머스 "짝지어 제거하기"
https://programmers.co.kr/learn/courses/30/lessons/12973 코딩테스트 연습 - 짝지어 제거하기 짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다. 먼저 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다. 그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙 programmers.co.kr 수행시간 : 40분 / 난이도 : 레벨 2 로직을 짤때 스택을 생각 안하고 재귀적으로 제거하려 했다가 시간을 엄청 소비했다. 같이 문제푸는 친구가 힌트를 살짝줘서 스택으로 구현 완료했다. 로직은, 스택의 top과 vector의 인덱스를 하나씩 비교하면서 같으면, pop 다르면 push 해주는 간단한 알고리즘이다. #include #include #i..
2021.06.26