공부한 것
- LeetCode #287. Find the Duplicate Number
어제 배운 Floyd’s Tortoise & Hare Algorithm을 응용하는 문제를 바로 만났다. 어쩐지 문제도 키워드도 전혀 linked list에 관련되어 보이지 않는데 linked list 문제 모음에 포함되어있다 했더니, 이런 미묘한 응용문제였을 줄이야. 풀이는 Leetcode와 GitHub 레파지토리에 올렸으므로 생략한다.
구상 중
- 문제풀이 코드 제출 후 실행 결과를 여러 개 모아서 소요 메모리와 시간 추이를 시각화하기:
- Node.js에서 실행한다 → 기각
: 그래프로 시각화하면 결과를 볼 수 있는 방법이 png 등의 이미지 파일로 저장하고 따로 열어보는 수밖에 없어서 기각했다. 내가 원하는 건 실행 시점에 바로바로 추이를 살펴보는 것이지 따로 파일을 열어야 하고 심지어 저장까지 되는 기능이 아니다.
- 브라우저에서 실행한다 → Leetcode의 CORS 정책에 걸림
: 이런 식으로 생긴 Leetcode 페이지에서 제출한 여러 submissions 결과를 추출하고 싶었으나 브라우저에서 바로 보내는 HTTP 요청은 CORS 정책에 막힌다.
- 로컬 서버가 브라우저에 렌더링하게 만든다 → 내가 원하는 정보인 submissions 항목은 개인정보에 해당함
: Express 서버를 간단히 만들어 서버를 실행시키고, axios로 HTTP 요청을 보낸 후, 응답으로 받는 html을 cheerio로 구문분석하여 원하는 정보를 뽑고, 마지막으로 간단한 ejs 템플릿을 만들어 서버사이드 렌더링해주었다. 그러나 axios 등으로 단순 페이지를 요청하면 로그인 없는 결과가 응답되어 원하는 데이터(submissions 정보)가 포함되어 있지 않았다. 로그인 정보와 함께 접근할 수 있는 방법을 찾아야 했다.
- 로그인 + 유저의 정보 중 submissions 정보에 접근하는 방법들(다음 Leetcode 질문 페이지의 답변을 전부 살펴봤다: https://leetcode.com/discuss/general-discussion/1297705/is-there-public-api-endpoints-available-for-leetcode):
방법1: https://github.com/JeremyTsaii/leetcode-stats-api
⇒ 주소 끝에 내 Leetcode 유저ID를 입력하기만 하면 JSON 결과를 받아볼 수 있는 방법. 로그인해야 얻을 수 있는 정보는 볼 수 없다(submissions의 구체적인 항목이 나오지 않는다)는 점에서 탈락.
방법2:
⇒ 주소 끝에 Leetcode 유저ID르 ㄹ입력하기만 하면 JSON 결과를 받아볼 수 있는 방법. 역시나 탈락이다.
방법3: https://github.com/akarsh1995/leetcode-graphql-queries
⇒ 로그인에 딱 필요한
EETCODE_SESSION
와csrftoken
쿠키를 언급하고 있는 걸로 보아 로그인을 하는 것은 확실해보이나, 내가 GraphQL 쿼리를 잘 모르고 샘플 결과에서 submissions 항목도 특별히 보이진 않아서 패스했다.
방법4: https://github.com/realvect0r/leetcode-api
⇒ 이곳을 보다가 방법5로 넘어감. 보류중
방법5: https://github.com/skygragon/leetcode-cli
진행중 (수많은 트러블슈팅은 다음에 이어서…)
- Node.js에서 실행한다 → 기각
Uploaded by N2T