목록Algorithm (18)
lastnamesong

몇 주 전에 파이썬으로 데이터 사이언스 공부를 하겠다는 마음으로 파이썬 개발환경을 구축하는 방법에 대한 글을 썼는데, 주변 환경이 오묘하게 전개되면서 알고리즘 공부를 시작하게 되었다. 이제 시작이라 잘 모르긴 하지만, 시스템을 제어하는 펌웨어를 개발하거나 로봇 상위제어 알고리즘을 연구하는 입장에서 데이터 처리에 관한 방법을 아는 것보다는 프로그래밍 알고리즘 공부를 하는 편이 더 도움될 수도 있겠다는 생각을 해본다. 그렇다면 더 실제적인 도움이 될 수 있도록 C++로 개발을 하는 것이 파이썬보다는 더 유리할 수 있겠다는 생각이 들었다.굉장히 짧은 경험에 비추어 생각해보면 파이썬은 상위 단에서 시뮬레이션이나 데이터 기반의 제어를 구현할 때에 유리했고, C나 C++은 low-level 단에서의 펌웨어나 스케줄..
코딩테스트를 준비하다 보면 빠지지 않고 등장하는 개념이 있다. 바로 시간복잡도이다. 문제를 풀 때 정답을 맞추는 것도 중요하지만, 주어진 시간 안에 효율적으로 해결하는 것도 필수이기 때문이다. 이번 글에서는 코딩테스트에서 왜 시간복잡도가 중요한지, 어떤 기준으로 따지는지, 그리고 세 가지 유형으로 정의되는 시간복잡도 표기법(Big-O, Big-Theta, Big-Omega)까지 정리해본다.시간복잡도란?시간복잡도란, 입력 크기(n)가 커질 때 알고리즘이 수행하는 연산 횟수가 얼마나 증가하는지를 나타내는 척도이다. 쉽게 말해, 데이터가 많아질수록 이 코드가 얼마나 느려질지를 수치화한 개념이다. 코딩테스트에서는 보통 아래 세 가지 표기법을 알아두면 된다.1. Big-O 표기법 (\(O\))가장 많이 쓰는 표..