정렬 알고리즘 (1) - 버블정렬, 단순 선택/삽입 정렬
·
Algorithm/자료구조와 함께 배우는 알고리즘
정렬 알고리즘은 정수의 배열을 오름/ 내림차순으로 정렬하기에 최적화 된 방법을 찾는 방식이다. 따라서 대소비교하는 수를 최소화 하는데에 초점을 두기 때문에 수식이 많아 코드를 이해하기 어려웠고 복잡했다. 유사한 방법의 알고리즘도 있어서 둘의 차이를 헷갈릴 때도 있었지만 그 속에서도 다른 점이 많았다. 정말 알고리즘이 늘기 위해선 문제를 많이 보고 직접 풀어보는 방법밖에는 없는 것 같다. 정렬 알고리즘 정렬이란 항목값의 대소에 따라 데이터 집합을 일정한 수서로 나열하는 작업이다. 값이 작은 데이터를 앞에 놓는것을 오름차순, 값이 큰 데이터를 앞에 놓는 것을 내림차순이라고 한다. 버블정렬 버블정렬은 이웃한 두 원소의 대소관계를 비교하여 교환을 반복하는 알고리즘이다. 총 대소구분을 하는 횟수는 (n - 1) ..
검색 알고리즘 - (선형 알고리즘)
·
Algorithm/자료구조와 함께 배우는 알고리즘
이제 정말 알고리즘에 대해 시작하는 느낌이다. 선형 알고리즘이 가장 기초가 되는 방법인 것 만큼 크게 어렵지 않아 쉽게 공부할 수 있었다. 이해가 안되는 코드도 단원을 마치고 다시 생각해보니 크게 어려웠던 내용이 아니고 내가 이해를 못했었던 것 같다. 앞으로도 초심을 잃지말고 지금처럼만 공부를 하면 좋은 코드를 만들 수 있는 사람이 될 수 있을거라고 생각을 하며 공부해야겠다. 선형 알고리즘 선형 알고리즘이란 검색값(key)을 배열의 0번 인덱스부터 마지막까지 찾아보는 알고리즘이다. 배열의 모든 인덱스를 하나하나 찾아보기 때문에 알고리즘 자체의 효율성은 좋지 않을 수 있지만 간단하고 확실하기 때문에 많이 사용되기도 한다. 다음은 선형 알고리즘의 코드이다. # while 을 이용한 선형 알고리즘 def se..
기본 자료구조와 배열
·
Algorithm/자료구조와 함께 배우는 알고리즘
이번 장에서는 자료구조의 정의와 자료구조의 기본형인 배열에 대해 알아보았다. 배열은 그동안 공부했었던 모든 책에서 한번 이상은 다뤄보았기 때문에 개념에 대해서는 쉽게 이해할 수 있었지만 배열의 알고리즘이 나온 이후로 머리가 너무 아프다. 나는 문제를 먼저 내가 한번 풀어보고 책에서는 어떻게 풀었는지 내 코드와 비교해가며 공부하고있는데 정말 내가 생각하지 못했던 방법이 이렇게 많고 내가 만든 코드는 정말 초라하다는 생각이 많이 들었다. 빨리 실력이 늘어 어려운 알고리즘 문제도 쉽게 풀 수 있는 안목이 생겼으면 좋겠다. 1. 자료구조와 배열 자료구조란 여러개의 값을 하나의 변수 안에 저장해 놓을 수 있어서 코드를 쉽고 효율적으로 작성할 수 있다. 대표적인 자료구조의 형태는 배열이 있다. 배열은 변수의 개수를..
알고리즘이란?
·
Algorithm/자료구조와 함께 배우는 알고리즘
저번에 공부하던 알고리즘 책이 내 수준에 맞는것 같지 않아 보다 쉬운 책을 하나 더 구매했다. 다행히 지금까지는 충분히 이해할 수 있을 정도의 난이도였고 이전에 공부하던 책도 틈틈히 보며 알고리즘에 대해 더 자세히 공부할 예정이다. 문제1. 세 정수의 최댓값 구하기 a = int(input('정수 a의 값을 입력하시오 :')) b = int(input('정수 b의 값을 입력하시오 :')) c = int(input('정수 c의 값을 입력하시오 :')) max = a if b > max: max = b if c > max: max = c print(f'최댓값은{max}입니다.') 이 알고리즘은 간단하다. 처음 a를 최댓값으로 주어서 만약 b 가 a보다 크다면 b가 최댓값이 되는 것이고 c와 비교를 한 뒤 최..