알고리즘 feat.시간복잡도

Ahn yi·2022년 9월 27일
0

java

목록 보기
1/22

협업하는 다른 사람의 코드 리뷰 및 시간복잡도에 대한 설명을 듣게 되었다.
우선, 시간 복잡도에 대해서는 이러하다.

O(1) < O(log n) < O(n) < O(nlog n) < O(n^2 2) < 0(2^n n)

이것에 대해 라이브코딩을 하는것이 멋있어 보였다. 내가 소수와 일반적인 수에 대해 로직을 구하는 것은 2중 for 문으로 하였는데, 이것을 같은 2중 for 문이더라도 시간복잡도에 따라 효율적인 코드로 변경되는 과정까지 이해하는 시간이었다. 내가 자주 사용하는 메소드에 대해서는 점차 알아두는게 좋을 것이고, 알게 될 것이라는 말을 들었다.
지금까지의 알고리즘 풀이로 어느 정도의 if 문과 for 문으로 알고리즘의 맛만 봤으니 점점 시간복잡도에 대한 생각도 하며 효율적으로 진행을 해야겠다. 새로운 개념으로 StringBuilder를 들었다. 프로그래머스 문제를 풀며 답안지에서 종종 보기는 했지만 말도 안되는 시간복잡도 성능을 보여준다고 하였다. StringBuilder의 append()와 toString() 등 자주 사용하는 메소드들과 알아두면 좋을 거 같다.

현재 알고리즘은 하루 한두문제로 정해두고 java 공부중에 있다. 언어스터디가 있으니 클래스 부분 공부를 도중인데, 앞 부분에 대해서도 class 공부 후에 훑어보는 시간을 가져야겠다.

아쉬웠던 점으로는 java를 처음부터 공부하려 했지만 class 부분이 급하여 앞 부분을 건너띄고 시작한 부분이다. 블로그에서 각자의 생각은 봤으니 책으로 여러번 정독해야겠다.
배웠던 점으로는 시간복잡도에 대한 기본적인 지식이다. 사실 그 동안은 알면서도 모르는척 했던 부분이었던거 같다. 우선, 문제해결에 중점을 두고 진행을 했었는데 이렇게 자세히 설명을 들으니 도움이 확실하게 되었다. 아마 알고리즘을 진행하다가 완성 전에 생각을 조금 더 하며 사고력을 기르다보면 자연스레 괜찮아 질거라고 생각한다.

profile
소통을 잘하고싶은 백엔드 개발자

0개의 댓글