본문 바로가기

전체 글

(224)
[알고리즘] 버블 정렬 (Bubble Sort) 버블 정렬은 두 개의 인접한 자료 값을 비교하면서 위치를 교환하는 방식으로 정렬하는 방법이다. 버블 정렬은 단 두개의 요소만 정렬해주는 좁은 범위의 정렬에 집중한다. 이 접근법은 간단하지만 단 하나의 요소를 정렬하기 위해 너무 많이 교환하는 낭비가 발생할 수도 있다. 아래와 같은 8개의 숫자가 임의의 순서로 나열되어 있다. 6 3 8 5 2 7 4 1 이 숫자들을 오름차순으로 정렬하기 위해 바로 옆에 있는 숫자들과 비교하는 방법을 사용해 보자. 먼저 가장 앞의 6과 3을 비교해서 순서를 바꾼다. 교환 전: 6 3 8 5 2 7 4 1 교환 후: 3 6 8 5 2 7 4 1 다음 쌍인 6과 8을 비교해보면 교환할 필요가 없으므로 그대로 둔다. 바로 다음 쌍인 8과 5를 비교해서 순서를 바꾸자. 교환 전: ..
[부스트코스] [모두를 위한 컴퓨터 과학] 2진법 비트 정보를 저장하고 연산을 수행하기 위해 컴퓨터는 비트(bit)라는 측정 단위를 씁니다. 비트는 이진 숫자라는 뜻을 가진 “binary digit”의 줄임말이며, 0과 1, 두 가지 값만 가질 수 있는 측정 단위입니다. 디지털 데이터를 여러 비트들로 나타냄으로써 두 가지 값만을 가지고도 많은 양의 정보를 저장할 수 있습니다. 또한 컴퓨터는 저장되어 있는 데이터를 수정하기 위해 비트에 수학적 연산을 수행할 수 있습니다. 비트열 하나의 비트는 0과 1, 이 두 가지의 값만 저장할 수 있습니다. 컴퓨터 내부에서 물리적 표현될 때는, 켜고 끌 수 있는 스위치라고 생각할 수 있겠습니다. (켜기=1, 끄기=0) 하지만 비트 한 개는 많은 양의 데이터를 나타내기에 턱없이 부족합니다. 그렇기 때문에 여러 숫자 조합을..
천재는 노력하는 사람을 이길 수 없고, 노력하는 사람은 즐기는 사람을 이길 수 없다. 프로그래밍을 즐기자
[딥러닝] CNN (Convolution Neural Network) 등장 배경Fully-Connected Layer의 구조적 문제로 인한 문제 발생이미지는 (가로, 세로, 채널)의 형태를 가지는 3차원 배열FC Layer의 입력은 항상 1차원 배열FC Layer는 모든 값들이 완전 연결되어 있으므로 전체 픽셀의 모든 관계를 다 계산해야 한다.따라서 이미지의 3차원 배열 형상을 무시하고 1차원 배열로 flatten 해서 학습한다. 이미지의 전체적인 관계를 고려하지 못해서 변형된 데이터에 매우 취약해지고(Topology)이미지의 특정 픽셀은 주변 픽셀과 관련이 있다는 특성을 잃어버린다.(Locality)따라서 이미지를 조금만 변형해도 완전히 다른 Obejct로 인식하게 된다.모든 이미지마다 학습해야 하므로 Layer의 크기가 커지고, 변수의 개수도 많아지며 학습 시간이 증가..
[부스트코스] [모두를 위한 파이썬] 예외처리(try, except) 파이썬 프로그램 실행 중에 Traceback이 발생하면 프로그램이 멈춘다. 이를 방지하기 위해서 try/except를 사용하자 try / except 구조 • 위험한 코드를 try/except 을 사용해 처리 • try 블록에 있는 코드가 성공하면 - except 블록을 건너뜀 • try 블록에 있는 코드가 실패하면 - except 블록을 실행 다음 코드를 실행하면 astr = 'Bob' try: print('Hello') istr = int(astr) print('There') except: istr = -1 print('Done', istr) print('There')는 실행되지 않는다. Hello Done -1 Process finished with exit code 0 따라서 try/except는..
[Python] set 자료형 remove() vs. discard() set 자료형에는 특정 element를 삭제하는 메소드로 remove()와 discard()가 있다. remove() remove는 삭제하려는 값이 set에 존재하지 않다면 오류를 발생시킨다. 예를 들어 remove()를 이용해서 10이라는 element를 두번 제거해보자 s = set() s.add(10) s.remove(10) s.remove(10) 첫번째 remove()는 예상대로 정상 동작하지만 두번째 remove()를 수행할 때는 다음과 같은 에러가 발생한다. Traceback (most recent call last): File "test.py", line 5, in s.remove(10) KeyError: 10 집합에 아무런 element도 없기 때문에 10이라는 element를 지우려고 할..
[부스트코스] [모두를 위한 파이썬] 변수, 표현식, 문장 상수(Constants) 상수는 값이 변하지 않습니다. print(123) #123으로 출력, 123이 상수 print(98.6) # 98.6으로 출력, 98.6이 상수 print('Hello World') # Hello World로 출력, Hello World가 상수 예약어(Reserved Words) 파이썬이 정한 의미로만 쓰이는 특별한 단어입니다. 예를 들어, 파이썬이 if라는 예약어를 만나게 되면 조건문을 실행하게 됩니다. 변수(Variables) 우리는 메모리에 사람이 이해 할 수 있는 변수명으로 원하는 데이터를 넣을 수 있는 공간을 확보 할 수 있습니다. x = 12.2 print(x) # 12.2가 출력됩니다. y = 14 x = 100 print(x) # 100이 출력됩니다. x, y : ..
[부스트코스] [모두를 위한 파이썬] 예약어, 순차문, 조건문 및 반복문 프로그래밍 방법 - 상호대화식, 스크립트식 하나의 프로그램을 위해서는 많은 수의 문장이 필요합니다. 커맨드라인에서 코드를 한줄씩 실행하는 방법은 상호대화식(Interactive) 이라고 합니다. 상호대화식 방법은 즉각적인 결과 확인에는 유리하지만 코드가 길어질 경우에는 스크립트 방식(여러줄을 한번에 작성하는 방식)이 훨씬 효과적입니다. 상호대화식 방법으로 작성 시 실수를 하게 된다면 다시 처음부터 작성해야 하는 상상하기 싫은 일이 발생합니다. 프로그램의 흐름 제어 크게 3가지 방법이 존재합니다. 1. 순차문 코드가 처음 줄부터 차례대로 실행되는 경우입니다. 짧고 단조로운 코드만 짤 수 있습니다. x = 2 print(x) # 2를 출력 x = x + 2 print(x) # 4를 출력 2. 조건문 어떤 조..