TIL
TIL_20230307
번잔중
2023. 3. 7. 23:57
오늘 할 일
- LeetCode 데일리 문제 풀기
- Heart
- 프로필 이미지 가입하면서 받는 것으로 수정 필요
- OAuth2 google에서 성별, 생년월일 API 사용 고려해봐야 할 듯
오늘 배운 것
LeetCode 데일리 문제 풀기
- 오늘의 문제: 2187. Minimum Time to Complete Trips(https://leetcode.com/problems/minimum-time-to-complete-trips/)
- 문제 조건
- time 배열이 주어지고 time[i]는 bus를 타고 여행하는데 걸리는 소요시간이다.
- totalTrips가 주어지는데 time 배열에 있는 차량의 운행 횟수가 최소가 되는 시간을 찾는 문제이다.
- 문제 해결
- 이진 탐색으로 해결하는 문제이다. 내가 보통 문제를 보면서 이유 없이 그리디인가 싶은 문제들은 parametric search 문제인게 참 신기할 따름이다.
- 해당 문제에서 찾는 값은 배열 내에 있지 않다. 오히려 특정 범위를 설정해주고 그 범위 사이에 있는 정답을 찾아가는 문제이다.
- 나는 문제에서 제시된 조건을 기반으로 범위를 설정해주었다. (물론 주석 처리한 부분처럼 배열의 최댓값과 totalTrips를 곱해주는 것이 더 나은 방법이다.)
- 이진 탐색으로 시작해서 totalTrips에 가까워지는 값을 찾아야 한다. 그래서 나는 makeTotal이라는 메소드를 만들어 time 배열에 있는 모든 값으로 mid를 나눈 값을 더한 값(value)과 totalTrips를 비교해주면서 범위를 좁혀나갔다.
- Thx jongwuner :)
GitHub - chaning49/LeetCode
Contribute to chaning49/LeetCode development by creating an account on GitHub.
github.com
OAuth2 적용해보기
- google oauth2에서 개인정보를 추가로 사용하는 방법 → 코드 상 추가하는 방법을 아직 찾지 못했고, 일정 지연으로 인해 우선 생년월일과 성별은 처음부터 수집하지 않고 마이페이지 화면으로 연결하는 것으로 마무리...
- application.yml에 있는 google.scope에 다음 항목을 추가한다.
- google 개발자 설정 > OAuth2 동의 화면에서 게시 상태를 앱 게시로 변경, 다른 것들은 따로 건들지 않아도 된다.
- 단, 사용자 한도가 100명이다.
- 하지만 코드 상에도 추가해주어야 한다…
느낀점
- 리트코드에서 parametric search 문제가 다시 나왔습니다. 이번에도 그리디 문제라고 생각했지만 아니었쥬? ㅋㅋㅋ 그래서 친구에게 다시 설명 듣고 저번보다 5% 더 이해했습니다!
- 프로젝트를 하면서 진짜 바짓가랑이 잡고 매달리면 안될게 없다고 생각했는데, 이것 저것 몇 일 동안 하면서 잘 안됐습니다. 그래서 일단 다른 중요한 할 일들을 먼저 해놓고 나중에 다시 해보기로 했습니다! 포기란 없습니다.
내일 할 일
- LeetCode 데일리 문제 풀기
- Heart
- 토큰 재발행 기능 수정