정의 : 어떤 문제를 해결하기 위한 일련의 절차나 방법을 공식화한 형태로 표현한 것을 의미한다.
알고리즘의 조건
- 입력: 외부에서 제공되는 자료가 0개 이상존재
- 출력: 적어도 2개이상의 서로 다른 결과를 내어야 한다.
- 명확성: 수행 과정은 명확하고 모호하지 않은 명령어로 구성되어야 한다.
- 유한성: 유한 번의 명령어를 수행 후 (유행 시간 내)에 종료한다.
- 효율성: 모든 과정은 명백하게 실행 가능 한 것이어야 한다.
예시
집에서 대학교까지 가는 방법 -> 지하철 / 버스 / 자가용 등등
그 중에서 가장 빠르게 갈 수 있는 길을 찾기, 버스나 지하철의 배차 시간
내가 공부해야할 알고리즘(좋은 프로그램을 만드는 아이디어)들
- 자료구조 (프로그램이 다뤄야 하는 자료를 프로그램 상에서 표현하는 형태)
- 정렬
- 탐색(이진탐색, 깊이우선탐색(DFS), 너비우선탐색(BFS) 등)
- 알고리즘 패더라임: 백트래킹,그리디 등
- 그래프 알고리즘
- 기계학습: SVM(서포트 벡터 머신) <이건 공부해야하는진 잘 모르겠다>
- 문자열 알고리즘
일상 => 블록체인, 유튜브(알고리즘) 등등
공간복잡도 -> 메모리를 얼마나 잘 활용할수있는가 (반도체쪽)
시간복잡도 -> 수행 시간이 빠른가 (처리해야 할 자료의 양(n)과 관련해서 알고리즘의 수행시간 "비례관계")
Big-O 표기법 : 제일 높은 차수만 나타냄 ex)2n+3 => O(n) |2n^2+2n+3=> O(n^2)
<자세한 나중에 추가로>
공부 방식
- 특정 언어에 대한 해답을 보지 말고 말로 된 설명, *의사코드(psesdo-code)
- 알고리즘을 스스로 생각할 수 있는 능력을 갖춰야함
- 다른 알고리즘이 있을 때 내 알고리즘과 비교해서 어떤게 더 좋은지 파악할 수 있어야함
- 타인이 봤을 때 이해 할 수 있어야함
- 정상작동하는가?
- 알고리즘과 관련된 수학을 공부하라
*의사코드 (슈도 코드) : 프로그램을 작성할 때 각 모듈이 작동하는 논리를 표현하기 위한 언어이다.
일반적인 언어로 코드를 흉내 내어 알고리즘을 써놓은 코드를 말한다. 의사코드는 말 그대로 흉내만 내는 코드->
컴퓨터에서 실행할 수 없으며, 특정 언어로 프로그램을 작성하기 전에 알고리즘의 모델을 대략적으로 모델링하는 데에 쓰인다.
●참고
https://seamless.tistory.com/96
프로그래밍과 알고리즘 공부 방법 - 김창준님
퍼온이의 생각 이 글은 월간 마소 2002년에 기고된 김창준 님의 "어떻게 공부할까: 프로그래머를 위한 공부론"이라는 기사 내용입니다. 해당 글을 읽고 나서 많은 생각을 하였고 개발자로 성장하
seamless.tistory.com
https://namu.wiki/w/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98
알고리즘(algorithm)이란?
알고리즘은 문제 해결을 위한 단계들을 체계적으로 명시한 것을 의미한다. 알고리즘이란 어떠한 문제를 해결하기 위한 일련의 절차나 방법을 공식화한 형태로 표현한 것을 의미한다. 알고리즘
6u2ni.tistory.com
https://namu.wiki/w/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98
'알고리즘(Algorithm)' 카테고리의 다른 글
백준 1978번: 소수찾기 (0) | 2022.04.30 |
---|---|
백준 4949번 : 균형잡힌 세상 [Python] (0) | 2022.04.18 |
백준 1110번 (파이썬) (0) | 2022.04.06 |
자료구조 - 큐 (0) | 2022.03.28 |
자료구조 - 스택 / 힙 (0) | 2022.03.28 |