본문 바로가기

알고리즘4

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