알고리즘이라는 말을 들어보셨나요? 개발 공부를 하다보면 한번쯤 들을 수 밖에 없는 알고리즘! 그만큼 알고리즘은 개발 분야에서 정말 중요한 개념입니다. 이번 시간부터는 알고리즘에 대해 함께 배워보도록 합시다.그런데 알고리즘은 정확히 어떤 걸 말하는 걸까요? 알고리즘의 사
지난 시간에는 문제에 대한 해결 과정인 알고리즘의 정의를 배웠습니다. 이번 시간에는 하나의 문제를 두고 얼마나 많은 알고리즘이 구현될 수 있는지 함께 알아보도록 하겠습니다.여러분은 신발 가게에 가서 원하는 브랜드의 신발을 찾아 구매하려고 합니다. 이때, 브랜드는 알파벳
저번 시간에는 여러 가지 알고리즘의 사례로 선형 탐색과 이진 탐색에 대해 알아보았습니다. 이번 시간에는 또 다른 여러 가지 알고리즘의 사례로 정렬에 대해 알아 봅시다. 👮♀️ 정렬(sorting) 정렬이란, 리스트의 원소들을 특정 순서로 정리하는 것입니다. 오름
지난 시간에 알고리즘을 공부하는 데에는 알고리즘의 효율성을 분석하는 것도 포함된다고 말씀 드렸습니다. 이번 시간에는 알고리즘의 효율성을 분석할 수 있도록 알고리즘 평가법에 대해 배워보도록 하겠습니다.만약 우리에게 주어진 시간이 무한대거나 컴퓨터의 성능이 무한대로 좋다면
지난 시간에는 알고리즘을 평가하는 두 기준과 평가에 필요한 기본적인 수학적 개념, 점근 표기법, 그리고 알고리즘 평가 사례에 대해 알아보았습니다. 이번 시간에는 주요 시간 복잡도와 공간 복잡도, 그리고 알고리즘 평가 시 주의해야 할 사항에 대해 함께 알아봅시다.
이번 시간에는 함수 안에 함수, 그 안에 함수... 입문자들이 많이 어려워하는 바로 그 개념! 그러나 개발자라면 반드시 알아야 하는 그 개념! 재귀 함수에 대해 함께 알아보겠습니다. 개념 설명에 앞서 재귀 함수는 많은 사람들이 어려워한다는 것을 알아두었으면 좋겠네요.
지난 시간에 재귀 함수의 개념을 함께 알아보았습니다. 이번 시간에는 배운 개념을 활용하여 여러 가지 재귀 함수 문제를 풀어봅시다. 문제의 해석을 보기 앞서 직접 문제를 풀어보시길 바랍니다. 혼자서 생각하는 시간은 매우 중요합니다. 어렵더라도 꼭 한 번 생각해본 뒤 해설
지난 시간에는 재귀 함수의 간단한 예제들을 함께 봤습니다. 이번 시간에는 난이도를 좀 더 높여 다양한 재귀 함수의 예제들을 추가적으로 만나보도록 합시다.flip은 파라미터로 리스트 my_list를 받고, 뒤집힌 리스트를 리턴해주는 재귀 함수입니다. 반복문 사용 없이 재
재귀 함수 연습하기 마지막 시간입니다! 🥳🥳🥳 마지막 시간인만큼 이제까지 만났던 문제들보다 조금 더 복잡한 문제를 가져와 봤는데요. **하노이의 탑**은 1883년 프랑스 수학자 루카스로부터 고안된 문제로서 수학 뿐만 아니라 **컴퓨터 이론에서도 자주 활용되는
좋은 알고리즘 작성법, 재귀 함수를 거쳐 알고리즘 패러다임 시간입니다! 알고리즘에도 수학처럼 공식이 있다는 것을 아셨나요? 여지껏 우리는 이러한 공식 없이 어찌보면 아주 무식한 방법으로 알고리즘을 풀어왔습니다. 하지만 이번 시간에 배울 알고리즘 패러다임을 익히면 여러분
저번 시간에는 알고리즘 패러다임의 첫 시작, Brute Force에 대해 배웠습니다. 모든 경우의 수를 찾는 방식을 활용하고 있어 가장 쉽게 생각해볼 수 있는 접근법이었는데요.이번 시간에 배울 새로운 알고리즘 패러다임은 Devide and Conquer입니다. Devi
저번 시간에는 Divide and Conquer의 개념과 그 사례에 대해 함께 알아봤습니다. 이번 시간에는 합병 정렬과 퀵 정렬을 활용한 Divide and Conquer의 사례를 함께 보겠습니다.앞서 알고리즘의 기초를 배우는 챕터에서 선택 정렬과 삽입 정렬에 대해 배
저번 시간에는 Divide and Conquer 방식으로 합병 정렬을 구현해봤습니다. 이번 시간에는 또 다른 정렬 방법인 퀵 정렬을 Divide and Conquer 방식으로 구현해보겠습니다. 💨 퀵 정렬 퀵 정렬을 배우기 앞서 합병 정렬을 간단히 복습해 봅시다.
지난 시간에는 나누고 정복하고 합치는 Divide and Conquer 알고리즘 패러다임에 대해 배웠습니다.이번 시간에는 새로운 알고리즘 패러다임 Dynamic Programming에 대해 함께 알아봅시다 :)Dynamic Programming에 대해 배우기에 앞서 D
저번 시간에는 중복 문제를 해결하는 Dynamic Programming에 필요한 두 조건과 이를 구현하기 위한 두 방법 중 하나인 Memoization에 대해 배웠습니다. 이번 시간에는 두번째 방법인 Tabulation에 대해 배우고 두 방법의 장단점을 알아보겠습니다.
Dynamic Programming 마지막 시간입니다. 저번 시간에는 Dynamic Programming의 두 번째 풀이법 Tabulation을 배우고 Memoization과 비교했을 때 장단점을 알아봤습니다. 이번 시간에는 Dynamic Programming의 새로운
저번 시간에는 Dynamic Programming의 사례를 코드로 함께 구현해봤습니다.이번 시간에는 마지막 알고리즘 패러다임, Greedy Algorithm을 배워봅시다.Greedy는 우리말로 '탐욕스럽다'는 뜻을 가지고 있습니다. 그럼 Greedy Algorithm은
저번 시간에는 Greedy Algorithm의 개념과 필요 조건, 사례를 함께 살펴봤습니다.이번 시간에는 더 다양한 Greedy Algorithm의 사례를 접하고 이 알고리즘에 대한 이해를 더 높여보는 시간을 가져봅시다.여러 명이 모여 카드 게임을 하고 있습니다. 각