오늘 할 일
- LeetCode 데일리 문제 풀기
- OAuth2 구현
오늘 배운 것
LeetCode 데일리 문제 풀기
- 오늘의 문제: 912. Sort an Array(https://leetcode.com/problems/sort-an-array/)
- 문제 조건
- 내장 함수를 사용하지 않고 O(nlog(n))의 시간복잡도, 최소한의 공간복잡도를 가질 수 있는 배열 정렬 알고리즘을 작성하는 문제이다.
- 문제 해결
- 일반적으로 O(nlog(n))의 시간복잡도를 갖는 정렬 알고리즘은 병합 정렬, 퀵 정렬, 힙 정렬이 있다.
- 이번에는 힙 정렬로 구현해볼 생각이다.
- 배열에 있는 요소를 최소 힙에 모두 삽입한 후, 하나씩 꺼내서 배열에 삽입한다.
GitHub - chaning49/LeetCode
Contribute to chaning49/LeetCode development by creating an account on GitHub.
github.com
OAuth2 적용해보기
- 리다이렉션 주소를 배포 주소로 해놔서 테스트 불가능하여 localhost:3000으로 수정 후 다시 보냈음
- 결과: 역시나 안됐음
- OAuth2의 워크플로우를 천천히 살펴보니 정리가 됐음
- 클라이언트에서 {배포 주소}/oatuh2/authorization/{provider}로 링크 접속만 하면 OAuth2 로그인이 가능하다.
- 나는 인증 방식을 authorization code로 선택했기 때문에 로그인에 성공하면 provider에 등록한 redirect uri로 code와 함께 넘어오는데, 이 코드를 가지고 provider에 보내서 해당 provider의 access token을 받는다. 이 토큰으로 사용자 정보를 조회해서 내가 만든 서버에 회원가입 처리를 하거나 회원 정보를 확인한 후에 access token과 refresh token을 queryparam에 포함해서 최종 redirect uri로 전달한다.(이 과정은 spring security 내부에서 진행되기 때문에 uri만 잘 설정해주면 된다.)
느낀점
- 리트코드에서 간만에 풀만한 문제라고 생각해서 쉽게 풀었는데, 직접 구현을 해보는 것이 좋다고 해서 여러 정렬 알고리즘들을 학습해보려고 합니다! 일단은 오늘 문제에서 나온 O(nlog(n)) 시간복잡도를 가지는 정렬 알고리즘인 merge, quick, heap sort를 공부해야겠네요!
- OAuth2에 대해 아직 제대로 이해하고 쓰는게 아닌 것 같습니다. 그래도 전보다는 이해도가 높아졌지만 아직도 의문투성이인 부분이 많아서 잘 될 수 있을지 모르겠네요.
내일 할 일
- LeetCode 데일리 문제 풀기
- OAuth2 구현
'TIL' 카테고리의 다른 글
TIL_20230303 (0) | 2023.03.03 |
---|---|
TIL_20230302 (0) | 2023.03.02 |
TIL_20230228 (0) | 2023.02.28 |
TIL_20230227 (0) | 2023.02.27 |
TIL_20230226 (0) | 2023.02.27 |