TIL - 2021.06.02
🧐오늘 한 일
- 프로그래머스(Lv2) 카카오블라인드2021 순위검색 (DFS, 경우의 수, HashMap, Bit)
- 프로젝트(Advist) - 로그인 이전 페이지로 redirect하는 것 (Referer Policy!!)
😁 알게 된 점
프로그래머스(Lv2) 카카오블라인드2021 순위검색 은 효율성까지 체크 하는 문제였다.
처음에는 문제에 나오는 순서 그대로 완전탐색을 해서 풀었더니 효율성이 0점이였다.
당연하다.. info만 해도 5000에 query는 10000인데.. ㅜ
⇒ 결국다른 풀이를 보니 조건이 나올수 있는 모든 경우의 수를 구해서 Map에 Key값으로 놓고 그 조건에 맞는 코테 점수들을 list형식으로 value값에 넣는다. 그 후에 그 list형식의 value값들을 순차 탐색하면 안되고, 이진 탐색을 해줘야 한다. 따라서 정렬을 우선하고 적은 값들이 있는 영역을 탐색(같은 점수가 있을 경우 큰 값 영역을 탐색하게 되면 중복되는 점수는 제외된다.)하면 된다.
⇒ 모든 경우의 수를 찾을 때 보통은 DFS를 사용했지만 나는 비트를 사용해 보고 싶어서 해설 영상을 찾아보고 다시 정리 해야 겠다!
⇒ 효율성이 있는 문제는 순차 탐색이 아닌 다른 탐색을 생각해보자, 그리고 맵을 이용해보자 (가장 많이 사용)
Advist - 로그인 이전 페이지로 redirect하는 부분에서 referer을 사용하는 방법이 왜 안되는 지 찾았다.!
⇒ referer란? 이전 방문 페이지, 링크 참조 페이지, 전체 추천자 등.. 링크를 통해 방문한 흔적 정보 저장 하는 HTTP Request헤더 필드
⇒ [이유] 크롬의 refer-policy가 바뀌었기 때문이다. ["no-referrer-when-downgrade"] → ["strict-origin-when-cross-origin"]으로 바뀌었는 데 이렇게 되면 이전에는 HTTPS이기만 하면 referer을 전송 해줬지만 이제는 전송해주는 조건이 많아졌다. 기본적으로 HTTPS일때만은 같지만 그 외에
1. 대상 주소의 도메인이 같은 경우
2. 도메인이 다를 경우 도메인 주소만 전송..
까지 추가 되었다. 서버url과 페이지 도메인이 달랐기 때문에.. 계속..도메인 주소만 전송되었던것!!
⇒ [해결 방법1] 프론트에서 url을 저장하고 서버로 보내준다.
⇒ [해결 방법2] 메타 태그를 바꾼다.
해결 방법 1를 해보고 성공 했으면 좋겠다~
→ 이유: 어떤 블로그에서 방문하는 건지 분석을 위함이 아닌 그저 이전 페이지로 이동을 원하기 때문에 굳이 크롬이 지정한 보안등급을 낮추고 싶지 않다..
<meta name="referrer" content="strict-origin-when-cross-origin" />
😎 다짐
- 효율성 문제를 풀 때는 얼마나 많은 경우의 수가 나올수 있는 지 체크를 하고 그것을 줄일 수 있는 방법을 사용해 보자. (맵, 이진 탐색...)
Author And Source
이 문제에 관하여(TIL - 2021.06.02), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@kangum99/TIL-2021.06.02저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)