본문 바로가기

공부46

[알고리즘] 버블 정렬 (bubble sort) 버블정렬(bubble sort) 란? 서로 이웃한 두 원소의 크기를 비교한 결과 순서대로 정렬되어 있지 않으면 교환을 반복하여 정렬을 진행하는 알고리즘이다. 구체적으로 말하자면 첫 번째 데이터와 두 번째 자료를, 두 번째 자료와 세 번째 자료를 ···· 이런 식으로 마지막 자료까지 서로 크기를 비교하여 교환하며 정렬하는 방식이다. 이렇게 첫번째 회전이 수행이 되고나면 가장 큰 자료가 맨 뒤로 가게 되며 두번째 회전부터는 맨마지막의 자료를 정렬에서 제외하고 이 과정을 반복한다. 가장 간단하지만 비효율적인 알고리즘이다. 이는 위의 예시와 같이 목록이 이미 정렬이 되어있어도 모든 항목을 검사하기 때문에 많은 시간복잡도가 걸리기 때문이다. 코드는 아래와 같다. def bubble_sort(li): n = len.. 2022. 6. 13.
[자료구조] 스택(Stack)과 큐(Queue) 스택(Stack) 스택이란 나중에 넣은 데이터가 먼저 반환이 될 수 있도록 설계한 메모리 구조를 의미한다. LIFO(Last In Firt Out), 선입후출이 라고도 한다. 실생활에서의 예시는 윈도우 운영체제를 들수있다. (컴퓨터를 실행시 가장 먼저실행되고 종료시 가장늦게 꺼진다.) 파이썬으로 구현한 스택의 클래스는 아래와 같다. class Stack(): def __init__(self): self.data = [] def push(self, item): self.data.append(item) def pop(self): if len(self.data) > 0: return self.data.pop() else: return None def return_stack(self): return self.d.. 2022. 6. 8.
내장 함수 set 함수 사용법 SET 함수의 선언법 set 함수는 딕셔너리와 비슷하지만 key가 없고 값만 존재한다. set 함수는 자동으로 중복된 값을 제거해준다. set의 선언은 set([])을 이용하거나 중괄호를 선언하고 바로 값을 삽입하면 된다 아래 예시로 확인해보자. SET 함수의 이용법 set에서 원소의 추가는 add를 사용한다. set에서의 여러 값의 추가는 update를 사용한다. set에서의 제거는 remove 함수 혹은 discard 를 사용한다 이 둘의 차이는 remove는 set 함수내에 값이 없으면 오류를 보여주고 discard를 이용하면 안에 값이 없더라도 에러가 발생하지 않는다. 아래 예시를 통하여 확인해보자. 2022. 6. 1.
도함수란 기울기란? 도함수란? 도함수는 기울기와 같은 의미이다. 기울기는 도함수의 개념을 쉽게 말한 개념이라고 생각하면 된다고 한다. 미분의 의미란 특정 지점에서의 기울기이다. 기울기를 좀 더 명확히 정의하자면 삼각형의 높이를 밑변으로 나눈 값이다. 아래 예시를 들어 이해를 해보도록 하자. a가 만약 2라고 가정한다면 f(a)=3a이니 f(a)=6이 된다. 그렇다면 a의 값을 살짝 밀어 a가 2.001이라고 해보자. 이제는 f(a)는 세배를 곱한 6.003이 되게 된다. 즉 f(a)는 0.003이 증가하게 된다 a는 오른쪽으로 0.001을 올린 것에 비해 위로는 3배가 늘어난다는 의미는 f(a)=3a 함수에서 기울기,도함수는 3이라는 것이다. 이는 a가 어떤 값일 때도 f(a)의 기울기가 3이기 때문에 이렇게 표현을 할 .. 2022. 5. 3.
케라스 이해하기 케라스를 사용하면서 딥러닝을 설계 해야한다면, 설계도는 하나의 모델이라고 표현된다고 한다. 모델은 퍼셉트론, 목표함수, 옵티마이저로 구성되어지며 과제의 예로 들면 아래와 같다. model = Sequential([ Dense(64, activation='sigmoid', input_dim=32), # A, B Dense(128, activation='sigmoid'), # C Dense(5, activation='softmax') # D ]) 위 예시에서 Sequential은 케라스에서 제공하는 모델 중에 하나이며 순차적인 레이어를 쌓기 위해 사용하는 모델이다. 코드의 2번째 줄에서 input_dim의 역할은 입력해야 할 뉴런의 수를 설정하는 것이고, activation의 역할은 활성화 함수를 설정하는 .. 2022. 5. 2.
파이썬에서 자연대수e를 사용하는 방법 numpy.exp() 시그모이드 함수를 구현하기 위하여 지수함수를 써야하는데 이 때 numpy에서 제공하는 numpy.exp()를 이용하여 지수함수를 사용할 수 있다. import numpy as np print(np.exp(0)) # e^0 와 동일 결과값 : 1.0 print(np.exp(1)) # e^1 와 동일 결과값 : 2.718~ print(np.exp(4.5)) # e^4.5 와 동일 결과값 : 90.01~ print(np.exp([0, 1])) # [e^0, e^1] 와 동일 결과값 : [1,2.718~] 위의 예시가 자연대수를 이용하는 방법이고 원래 목적인 시그모이드 함수를 표현하기 위해선 아래와 같다. def sigmoid(x): return 1 / (1 + np.exp(-x)) 2022. 5. 2.
정치 관련 홍보 전화 차단 방법 대선이 끝났는데도 매일같이 02 로 시작하는 정치 관련 전화가 온다 서울시장인지 뭔지.. 전화 좀 그만했으면.. 내 번호.. 그만 팔려.. skt -> 티월드 접속, 번호제공에서선거 관련 여론 조사 목적의 휴대폰 번호 제공 메뉴에서 거부 등록버튼 kt -> 080-999-1390 전화해서 거부 신청 lg -> 080 -855 -0016 전화해서 거부신청 2022. 4. 27.
이산형 확률분포의 종류(베르누이,이항분포,기하분포,포아송 ...) 이산형 확률 분포(Discrete probability distribution)란? 확률 변수가 특정한 값을 가질 확률을 나타내는 함수 중 값의 개수가 가산 할 수 있는 분포를 말한다. 여기서 가산이라 함은 벌어지는 사건의 확률이 유한하거나 점으로 표현이 가능한 경우를 말한다. 즉 확률변수가 취할 수 있는 실수 값의 수를 셀 수 있는 변수를 말한다 예로 동전 던지기, 주사위 던지기 등이 있다. 베르누이 확률분포, 이항분포, 기하분포, 포아송분포 등이 있으며 각 분포의 설명은 아래와 같다 베르누이 분포(Bernoulli Distribution)란? 매 사건의 시행때 마다 오직 결과 값이 2개만 존재하는 경우의 확률변수 이항 분포란? 연속된 n번의 독립적 시행에서 각 시행의 확률을 가질 때의 이산 확률 분포.. 2022. 4. 26.