공부 7

[python] list 안에서 for문과 if 조건문 이용하기 (list comprehension)

파이썬은 다른 언어와 다르게 list 내에서 for문과 if 조건문을 한번에 사용할 수 있다. 이런걸 리스트 컴프리핸션(list comprehension)이라고 한다. 이를 이용하면 코드의 길이를 축약할 수 있다는 장점이 있다. 자세한 사용방법은 밑에 설명하도록 할 것이다. list와 for문만을 이용한 예시 for문 하나만 있을 때의 작성 형식 : [식 for 변수 in 리스트] 또는 list(식 for 변수 in 리스트) for문 여러개 있을 때의 작성 형식 : [식 for 변수1 in 리스트1 for 변수2 in 리스트2] 또는 list(식 for 변수1 in 리스트1 for 변수2 in 리스트2) 간단하게 list와 for문만을 이용해서 코드를 짜보도록 할 것이다. a = [i for i in r..

공부 2021.01.10

탐욕법 (greedy algorithms)

정의 탐욕법은 문제를 해결하는 과정에서 그 순간 마다 최적의 결정을 하는 방식으로 진행하여 최종 결론에 도답하는 문제 해결 방식. 그 순간의 상황에서 가장 좋다고 생각하는 걸 선택하기 때문에 가장 좋은 결과를 보장하는 것은 아니다. 동적 프로그래밍 사용 시 지나치게 많은 일을 한다는 것에서 착안하여 고안된 알고리즘 동적 프로그래밍을 대체하는 것은 아니며, 같이 쓰이며 보완하는 개념 예시 사진 이 그림과 같이 실질적으로 순간의 상황마다 최적의 값을 구하는 그리디 알고리즘으로 따라가보면 11의 값을 얻게 되지만, 실제의 최적의 답은 99이다. 이와 같이 가장 좋은 결과를 보장하는 것이 아님을 알 수 있다. 활용되는 문제 활동 선택 문제 각각의 활동들은 시작시간과 종료시간이 있다. 한 사람이 최대한 많이 할 ..

공부 2020.04.12

[crawling] selenium을 이용할 때 생기는 session not created 오류 해결

selenium을 이용하여 구글을 크롤링하려고 하던 도중 오류가 났다. selenium.commom.exceptions.SessionNotCreatedException과 같은 에러가 나오고 상세 메세지로는 session이 생성되지 않는 말과 버전 얘기가 나온다. 혹시나 하는 마음에 내 크롬 버전을 확인해주고, 내 크롬버전과 그에 맞는 크롬 드라이버를 깔아주니 문제가 해결됐다. 내 크롬버전을 확인하는 방법은 다음과 같다. 다음과 같은 버튼을 눌러 설정을 누르고 왼쪽에 있는 Chrome 정보를 누르면 다음과 같이 확인할 수 있다. 만약 내 크롬 버전이 80이라고 치면 webdriver 버전을 80으로 받아서 사용하면 된다.

공부 2020.04.04

[python] 모듈과 패키지

파이썬을 공부하다 보면 모듈을 import 하는 방식이 코드마다 여러 개 임을 볼 수 있다. 그래서 그 차이점을 공부해보았다. 모듈 특정 기능을 .py 파일 단위로 작성한 것 패키지 특정 기능과 관련된 여러 모듈을 묶은 것. 패키지는 모듈에 네임스페이스를 제공 라이브러리 파이썬에 기본으로 설치된 모듈과 패키지, 내장 함수를 묶어서 파이썬 표준 라이브러리(PSL)이라고 부름 import VS from import VS import as 1) import import의 경우 모듈 이름을 뒤에 붙이며, 여러 개를 가져올 때는 모듈을 콤마로 구별 그리고 모듈.변수 형식으로 모듈의 변수를 사용하며 함수의 경우에도 모듈.함수() 이런 식으로 사용한다. ex) import ModuleName1, ModuleName2..

공부 2020.03.29

[선형대수] Norm이란? (L0, L1, L2 Norm)

Norm? 백터에서의 길이 혹은 크기를 측정하는 방법이다. norm이 측정한 벡터의 크기는 원점에서 벡터 좌표까지의 거리라고 한다. 이 공식에서 P는 norm의 차수를 의미하며, p가 1이면 L1 norm이고, p가 2면 L2 norm이다. L0 Norm 실제로는 norm이 아니다. 벡터의 0이 아닌 요소의 총 갯수에 해당한다. ex) v(0,0), v(0,2)의 L0 norm의 개수 : 1개 (0이 아닌 element 개수를 쓰면 됨) L1 Norm Taxicab Norm 또는 manhattan Norm이라고 한다. 백터 요소에 대한 절댓값의 합 요소의 값 변화 파악할 수 있다. L1 regularization과 computer vision 분야에서 사용한다. L2 Norm Euclidean norm이..

공부 2020.03.23

[자료구조] 해시(Hash), 해시테이블(Hash table),해싱(hashing) 이란?

개념 해시함수(hash function)란 데이터의 효율적 관리를 목적으로 임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 함수이다. 이 때 매핑 전 원래 데이터의 값을 키(key), 매핑 후 데이터의 값을 해시값(hash value), 매핑하는 과정 자체를 해싱(hashing)이라고 한다. 해시 테이블은 다음과 같은 총 5개[키(key), 해시함수(hash function), 해시(hash), 값(value), 저장소(bucket,slot)]로 이루어진다. 키(key) : 고유한 값이며, 해시 함수의 input이 된다. 해시함수(Hash function) : 키(key)를 해시(hash)로 바꿔주는 역할을 한다. 해시(hash) : 해시 함수(hash function)의 결과물이며, 저장소(bu..

공부 2020.03.13

로드밸런싱이란?

로드밸런싱(load balancing)이란? 부하분산이라고도 불리며, 중앙처리장치 혹은 저장장치와 같은 컴퓨터 자원들에게 작업을 나누는 것을 의미. 또한 거대한 트래픽의 감당을 줄이기 위한 방법으로 제시됨. 보통 트래픽의 서버의 부화가 심할 때는 가장 먼저 하는 일은 DB와 서버를 분리하는 것. DB서버의 분리만으로도 서버의 부하를 감당할 수 없음. 가용성 및 응답시간을 최적화 시킬 수 있음. 이 기술은 보통 내부 네트워크를 이용한 병렬처리에서 이용된다. 로드 밸런싱 방법으로는 2가지가 있다. 네임(DNS)서버의 도메인을 이용한 DNS 라운드 로빈 L4를 이용한 로드밸런싱 라운드로빈 DNS(Round Robin DNS) 특별한 하드웨어 및 소프트웨어가 필요가 없는 방식이 있다. 서버가 A, B, C 3대..

공부 2020.02.29