21년 1월 13일
~
한 일
- 오늘은 하루종일 알고리즘만 풀었다.
- 릿코드 문제:
- two-sum
- Reverse Integer
- StringBuilder를 이용하여 풀었는데, 다른 풀이가 훨씬 간단했다.
- 다른 풀이에서는 Integer 자체를 가지고 %와 /를 사용하여 reverse Integer를 구했다.
- 음수 나머지 연산도 -가 붙을 뿐 아예 똑같다는 것을 기억하자
- -9 % 2 = -1, -20 % 3 = -2
- Remove Duplicates from sorted list
- Palindrome number
- Longest common prefix
- Suffix Array를 통해 LCD를 구하는 건지 잘못알고 엄청 공부했다.
- Suffix Array를 통해 구하는 문제가 아니었다.
- Suffix Array를 검색하여 딱 개념만 겨우 이해했다.
- Linked List cycle
- Cycle을 검사하는데 공간복잡도가 O(1)으로 풀 수 있다는 걸 처음 알았다.
- linked list에서 한칸씩 이동하는 slow와 두칸씩 이동하는 fast가 같은 지점에서 출발한다고 가정하자.
- linked list가 cycle이 형성되어 있다면 slow와 fast는 언젠가 무조건 만난다.
- 프로그래머스 문제:
- 소수찾기
- 예전에 풀었던 완전탐색 문제인데, permutation 알고리즘이 필요한 문제이다.
- STL엔 next_permutation함수가 있어서 쉽게 풀었었는데, Java엔 순열 함수가 없어서 직접 구현하여 풀었다.
- Permutation 알고리즘 포스팅하였다.
잘못한 것
- 선택과 집중을 잘 못하는 것 같다.
- Suffix Array가 지금 당장 나에게 중요한 알고리즘이 아닌데도 이해해보겠다고 많은 시간을 썼고 지쳤다.
잘한 것
- 드디어 Permutation 알고리즘을 이해하고 찜찜함을 풀었다. (원래 permutation은 STL에 의존하다 보니 찜찜했다.)
느낌
- 그냥 알고리즘은 자바로 풀기로 정했다. 그만 방황하고 알고리즘 테스트를 열심히 준비하자
- 코드스쿼드 Java 백엔드 과정에 대한 학습 목표를 봤는데, 저 목표를 모두 이룰 수 있을까 걱정이 됐다.
- 5시~7시까지 자신이 없어지고 집중이 안되서 낮잠을 잤다.
- 쫄지말자 꾸준히 하면 언젠가 할 수 있겠지
할 일
- 코드스쿼드 미션 진행
- 프로그래머스 알고리즘 풀기
- 자바의정석 읽기