코딩 테스트를 슬슬 준비하려고 한다. 매일 하나 이상 푸는 것을 목표로 하고 있다. (오늘로 2일차)
어쨌든, sort 함수는 정말 정말정말 많이 쓰이는 것 같고, 오늘 문제를 풀 때 당연하게 sort를 쓰는 나를 발견했다. 그런데, 시간 복잡도를 신경을 쓰는 순간 sort 함수의 시간 복잡도를 생각해본 적 없다는 걸 알게 되었다.
그래서 검색한 결과, quick sort 알고리즘을 바탕으로 만들어졌기에 O(n*logn)이라고 한다. 정렬 알고리즘 중 빠른 친구다. 역시, 코딩 테스트에서 정렬할 때 사용하면 좋은 것 같다.
매번 헷갈리지만 이젠 습관처럼 치는 건데, sort 할 때 시작과 끝을 넣어야 하는데 arr.front() 와 arr.begin(), arr.back()과 arr.end() 중 헷갈릴 때가 많았다. 적어도 나는. 다시 한 번 짚고 넘어가자면, arr.begin()과 arr.end()를 사용해주는 것이 맞다.
begin은 iterator, 첫 번째 원소를 가리키는 느낌이고, front는 그냥 첫 번째 원소를 반환해준다. end와 back도 마찬가지이다. 이게 헷갈리는 사람은 없길 바란다..