
코드스테이즈 41기 교육 내용을 정리하고 있습니다.
틀린 부분이 있으면 댓글로 알려주시면 감사하겠습니다

알고리즘
알고리즘은 어떤 문제를 해결하기 위해서 일련의 절차를 정의하고, 공식화한 형태로 표현한 일종의 문제의 풀이 방법입니다. 알고리즘은 문제를 해결하는 최선의 선택입니다. 프로그래밍에서 알고리즘은 input 값을 통해 output값을 얻기 위한 계산과정을 의미합니다. 주어진 문제를 해결할 때 정확하고 효율적으로 결과 값을 얻는 것이 필요하고 그때 바로 이 알고리즘을 사용합니다.
알고리즘이라 명시되려면 일정한 조건들을 만족해야 합니다.
- 입력
- 알고리즘은 출력에 필요한 자료를 입력받을 수 있어야 합니다. 꼭 받지 않는 경우도 있습니다
- 출력
- 알고리즘은 최소 하나의 출력을 갖습니다. 출력이 없다면 해당 알고리즘의 실행이 종료되었는지 알수 없습니다. 이것은 유한성과도 관련이 있습니다.
- 유한성
- 알고리즘은 명령어를 수행한 후 유한한 시간 내로 종료되어야합니다.
이는 알고리즘은 반드시 종료되어야하고, 무한루프에 갖혀서는 안된다는 뜻입니다.
- 알고리즘은 명령어를 수행한 후 유한한 시간 내로 종료되어야합니다.
- 명확성
- 알고리즘의 각 단계는 단순하고 명확해야 하며, 모호해서는 안 됩니다.
- 효율성
- 알고리즘은 가능한 효육적이어야 합니다. 모든 과정은 명백하게 실행 가능해야 하며, 실행 가능성이 떨어지는 알고리즘은 효율적이지 못한 알고리즘이라 볼 수 있습니다. 알고리즘은 시간 복잡도와 공간 복잡도를 통해 결정이 되므로, 시간 복잡도와 공간 복잡도가 낮을 수록 효율적인 알고리즘이라 볼 수 있습니다.
알고리즘 해결 방법
문제를 이해하라
제 경우에도 문제를 이해하지 못하고 진행하다 실패한 경험이 많습니다. 문제 자체를 이해하는것, 제한사항은 무엇이고, 주의사항은 무엇인지 꼼꼼하게 확인해야합니다. 주어진 조건은 토대로 무제가 무엇인지 이해하는 것부터 시작해야합니다.
문제를 어떻게 해결할 수 있을지, 전약을 세웁니다.
- 수도코드 작성 전, 인간의 사고로 문제 해결해보기
- 연습장에 그림을 그려가며 전체 흐름을 이해하기
- 수도코드 작성해보기
코드작성 해보기
코드로 작성해보며 막히는 부분은 검색을 통해 해결하며 새로 알게된 내용은 정리를 해둡니다.
코드스테이츠 메모
앞으로 우리가 개발자로서 만나게 될 대부분의 개발 태스크는 알고리즘 문제만큼 어렵지 않습니다. 그러나 새로운 문제에 봉착했을 때, 전략과 알고리즘을 구상하여 실제로 코드로 구현해 보는 경험은 매우 중요합니다. 많은 기업에서 주니어 개발자를 채용할 때에, 알고리즘 풀이를 통해 지원자의 역량을 가늠합니다. 알고리즘 풀이를 통해 지원자의 로직과 문제해결 방식을 확인하고, 이를 통해 개발자다운 사고방식을 보게 됩니다. 이 스프린트를 통해 개발자의 사고방식을 연습하세요.
'프론트엔드 > Codestates' 카테고리의 다른 글
| [정규표현식] 정규표현식 (0) | 2022.12.12 |
|---|---|
| [알고리즘] 시간 복잡도 & 공간 복잡도 (0) | 2022.12.12 |
| [최적화] Lighthouse (0) | 2022.12.05 |
| [Testing] TDD (0) | 2022.12.02 |
| [컴퓨터 공학] 운영체제 (0) | 2022.11.30 |