재귀 함수란 쉽게 이야기해서 함수내에서 자기 자신을 다시 호출하는 함수를 말한다. 즉, 함수A가 함수 내에서 자기 자신인 함수A를 호출하는 것이다. 간단한 예시로 아래와 같은 코드를 들 수 있다. def recursive(): print("재귀 함수 호출") recursive() recursive() 위의 예시에 대해 해석해보면 먼저 가장 아랫줄의 코드를 통해서 함수 recursive가 호출되게 된다. 그 이후 함수 내에서 "재귀 함수 호출" 이라는 메시지를 출력하게 되고 다음으로 다시 recursive 함수를 호출한다. 다음 호출에도 똑같은 과정이 반복될 것이고 따라서 무한으로 메시지가 출력되며 계속 함수가 호출되게 된다. 물론 파이썬에서는 재귀의 최대 깊이가 존재하기 때문에 어느정도 재귀 함수가 호출..
파이썬
구현이란 말 그대로 소스코드를 구현해 내는 것이다. 즉, 문제를 읽고 해석하고 그에 따른 알고리즘을 소스코드로 바꾸는 과정이라고 할 수 있는 것이다. 흔히 문제 해결 분야에서 구현 유형의 문제를 '풀이를 떠올리는 것은 쉽지만 소스코드로 옮기는 것은 어려운 유형' 이라고 일컫는다. 그러한 이유는 대부분 아래와 같다. 사소한 조건 설정이 많은 문제인 경우 프로그래밍 문법을 정확하게 숙지하지 못한 경우 라이브러리 사용 경험이 부족한 경우 이러한 경우들을 사전에 방지하기 위해서 구현 유형의 다양한 문제를 풀어봐야 할 것이다. 이 책에서는 완전 탐색, 시뮬레이션 유형을 모두 구현 유형으로 묶는다. 먼저 완전 탐색이란 모든 경우의 수를 시행해보는 방법이고, 시뮬레이션은 문제에서 제시한 알고리즘을 한 단계씩 차례대로..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FypHIk%2Fbtsoe1vwT36%2F1UPdSPABL0X7PywN20jnv1%2Fimg.png)
그리디 알고리즘은 말 그대로 탐욕적인 알고리즘이라는 뜻을 내포한다. 그리디 알고리즘에서는 현재 상황에서 최적의 방법을 선택한다. 매 순간 가장 좋아보이는 방법을 선택하며 추후에 미칠 영향은 생각하지 않는 것이다. 코딩 테스트에서 만나게 될 그리디 알고리즘의 문제 유형은 사전에 암기하고 있지 않아도 풀 수 있는 가능성이 높은 유형이다. 그리디 알고리즘의 출제 유형은 매우 폭넓으므로 특이 케이스를 제외하고는 단순 암기를 통한 문제 해결은 힘들다. 이 유형은 '창의력'을 요구한다. 문제가 단순히 현재 상황에서 최적의 선택만을 해서 해결 가능한 문제인지를 파악할 수 있어야 한다. 코딩 테스트에서 그리디 알고리즘의 문제는 '가장 큰 (작은) 순서대로' 등과 같은 조건을 은밀히 제시한다. 따라서 그리디 알고리즘은 ..