문제 해결 패턴 - 빈도수 세기
예를 들어 배열 2개의 요소와 그 수량이 동일한지 확인하는 함수를 작성할 때
일반적으로 아래와 같은 이중 for문을 작성할 수 있다.
function same(arr1, arr2){
if(arr1.length !== arr2.length){
return false;
}
for(let i = 0; i < arr1.length; i++){
let correctIndex = arr2.indexOf(arr1[i])
if(correctIndex === -1) {
return false;
}
arr2.splice(correctIndex,1)
}
return true
}
이 때의 시간 복잡도는 N^2
객체의 키-값을 활용하면 시간 복잡도를 N으로 낮출 수 있다.
function validAnagram(ch1, ch2) {
// add whatever parameters you deem necessary - good luck!
if (ch1.length !== ch2.length) return false;
let frequency1 = {};
let frequency2 = {};
for (let val of ch1) frequency1[val] = (frequency1[val] || 0) + 1;
for (let val of ch2) frequency2[val] = (frequency2[val] || 0) + 1;
for (let key in frequency1) {
if (!(key in frequency2)) return false;
if (frequency1[key] !== frequency2[key]) return false;
}
return true;
}
해야할 과제
- 멘토분 구하기
- 개인 프로젝트 작업 과정 고민
리프레시 토큰을 통한 액세스 토큰 재발급 과정
JWT토큰을 엑세스 토큰 및 리프레시 토큰으로 사용하는 경우
로그인 처리
1. 액세스 토큰이 유효한 경우
2. 엑세스 토큰이 무효한 경우
엑세스 토큰이 무효한 지 체크하는 과정이
클라이언트 측일수도 있고, 서버 측일수도 있다.
클라이언트일 경우 axios 요청의 request를 intercept를 통해서 유효한지 검증할 수 있다.
엑세스 토큰이 만료된 것이 확인되면
클라이언트측에서 엑세스 토큰 만료 확인하는 경우
1. refresh 토큰은 그대로 두고 액세스 토큰만 재발급
2. refresh 토큰이 만료가 임박하면 refresh 토큰과 엑세스 토큰을 같이 재발급
서버측에서 엑세스 토큰 만료 확인하는 경우
3. 엑세스 토큰을 통한 요청이 401에러로 올 때 refresh 토큰으로 재요청
refresh 토큰도 무효하면 재로그인 요청