[완전 탐색 알고리즘]은 무엇일까? '완전 탐색 알고리즘'은 이름에서 알 수 있듯 답을 찾기 위해 모든 상황을 다 계산하여 답을 찾도록 구현하는 알고리즘으로 시간이 가장 오래 걸리는 방법이지만, 가장 정확한 답을 찾을 수 있다. 완전 탐색 알고리즘을 풀 때, 'for 문'을 사용하면 금방 해결의 실마리를 찾아낼 수 있지만 for문을 얼마나 체계적으로, 효과적으로 짜느냐가 중요한 관건이다. 완전 탐색 알고리즘의 시간 복잡도는 for문이 얼마나 중첩되어 있느냐에 따라서 크게 다른데 for문이 x개 중첩되면 시간 복잡도가 n의 x제곱이 되는 만큼 시간 복잡도가 매우 크다. 완전 탐색을 사용해야 하는 두 문제를 리뷰해보면서 해당 알고리즘에 대해 파고들어 보자. 백준 2309번: 난이도 下 문제 설명: 왕비를 피..
스마트 포인터, 왜 사용하는 걸까? C언어로 개발을 하다 보면 new를 사용해서 메모리를 동적으로 할당받아 사용해야 하는 경우를 많이 볼 수 있다. 이때, 주의해야 할 점은 메모리를 할당받을 경우, 사용 후 반드시 Delete 해줘야 하는 것인데, 그렇지 않을 경우 '메모리 누수(Memory Leak)'가 발생하여 메모리를 낭비하게 된다. 그래서 최신 C++에서는 사용자가 메모리를 관리해야 하는 번거로움을 줄이고, 메모리/리소스 누수와 예외 안전성을 보장하기 위해 포인터처럼 동작하는 클래스 템플릿, '스마트 포인터'를 도입했다. 간단히 말하자면 스마트 포인터는 사용이 끝난 메모리를 자동으로 해제해준다. 스마트 포인터, 어떻게 사용하면 될까? 우선, 스마트 포인터는 세 가지 종류가 있다. 이들에 대해 각각..