| 알고리즘이란?
프로그램은 자료 구조와 알고리즘으로 구성되어 있다.
문제를 해결하기 위한 처리 절차를 구체적인 순서에 따라 표현한 아이디어나 생각으로, 일상 생활에서도 사용한다.
컴퓨터 공학 혹은 컴퓨터 과학(Computer Science Engineering)에서는 문제를 어떻게 풀 것인가에 대한 자세한 설명서이자 input 값을 통해 output 값을 얻기 위한 계산 과정
간단히 말해 문제를 해결하려는 방법 및 절차, 과정이라고 할 수 있는데 순서도에 영향을 받음
(ex. 물건을 구매하는 과정, 결제하는 과정 등)
| 특징/조건
입력 (Input) |
외부에서 제공되는 자료가 0개 이상 존재 (없을 수 있음) |
출력 (Output) |
문제가 처리되면 결과가 최소 1개 이상 존재 (모든 입력에 하나의 출력- 이 나오면 X) |
유한성 |
유한한 수의 작업 후에는 반드시 유한 시간 내 종료해야 함 |
명확성 |
각 단계가 무엇을 위한 것인지 명확한 명령어로 구성되어야 함 |
유효성 |
모든 명령은 실행 가능해야 함 |
일반성 |
특정 값 뿐 아니라 정의된 모든 입력에 적용 가능 |
효율성 |
알고리즘은 가능한 효율적이어야 함 |
좋은 알고리즘의 조건
: 알기 쉽고 속도가 빠르다. 효율적이고 재이용하기 쉽다.
프로그램을 실행할 때 사용하는 메모리의 영역이 작다
| 공부법
앞으로 알고리즘을 공부하며 새겨두어야 할 부분에 대해 정리했다.
① 공부는 꾸준히
② 하나의 문제에 대해 다양하고 깊이 생각해보기
③ 문제를 못 풀었을 때, 답을 보고 내 답과 비교하기
- 왜 안되는지, 답과 무엇이 다른지 오답노트
- 절대 답을 보고 외우지 않기
> 문제가 달라지거나 새로운 문제를 만나면 풀 수 없게 됨
'알고리즘' 카테고리의 다른 글
[그리디] 백준 11047번 동전 0 Python 풀이 (0) | 2021.01.31 |
---|---|
[그리디] 백준 11399번 ATM Python 풀이 (0) | 2021.01.31 |
[그리디] 백준 2839번 설탕 배달 Python 풀이 (0) | 2021.01.30 |
그리디 알고리즘 (0) | 2021.01.24 |
알고리즘 문제를 풀며 주의해야 할 사항 (0) | 2020.06.21 |