분류 전체보기(277)
-
[프로그래머스][해시] 완주하지 못한 선수
[해시] 완주하지 못한 선수 문제 출처: 프로그래머스(programmers.co.kr/learn/courses/30/lessons/42576?language=javascript) 문제 설명 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요. 제한사항 마라톤 경기에 참여한 선수의 수는 1명 이상 100,000명 이하입니다. completion의 길이는 participant의 길이보다 1 작습니다. 참가자의 이름은 1개 이상 2..
2021.03.11 -
[프로그래머스] [해시] 위장
[해시] 위장 문제 출처: 프로그래머스(programmers.co.kr/learn/courses/30/lessons/42578) 문제 설명 스파이들은 매일 다른 옷을 조합하여 입어 자신을 위장합니다. 예를 들어 스파이가 가진 옷이 아래와 같고 오늘 스파이가 동그란 안경, 긴 코트, 파란색 티셔츠를 입었다면 다음날은 청바지를 추가로 입거나 동그란 안경 대신 검정 선글라스를 착용하거나 해야 합니다. 종류 이름 얼굴 동그란 안경, 검정 선글라스 상의 파란색 티셔츠 하의 청바지 겉옷 긴 코트 스파이가 가진 의상들이 담긴 2차원 배열 clothes가 주어질 때 서로 다른 옷의 조합의 수를 return 하도록 solution 함수를 작성해주세요. 제한사항 clothes의 각 행은 [의상의 이름, 의상의 종류]로 이..
2021.03.11 -
[자료구조] 해시 - (2) 구현 - 충돌해결 - ② linear probing
🎈선형탐색법(linear probing) 새 원소 추가 시 인덱스가 이미 점유된 상태라면 인덱스+1 을 찾아보고, 인덱스+1도 점유됐다면 인덱스+2를 찾아보는 식으로 충돌을 회피하는 방법 🎀 앞서 기본적인 해시테이블을 구현할 때와 chaining으로 충돌을 해결했을 때에는 기본적으로 해시테이블의 constructor에서 테이블(배열)의 사이즈를 storageLimit으로 지정해놓았었는데, 선형탐색법 방법에서는 제한을 두지 않을 것이다. 🎁 다른 프로그래밍 언어에서는 배열의 크기를 미리 정하게 되어 있는데, 선형 탐색법에서 한 가지 신경쓰이는 부분이 배열 인덱스가 가능한 범위를 벗어났을 경우이다. 자바스크립트에서는 배열을 따로 크기를 지정해놓지 않아도 원소를 추가하면 자동으로 크기가 늘어나므로 전혀 고민할..
2021.03.11 -
[유튜브 클론코딩] 6.8 Github Login Part.3
6.8 Github Login Part.3 githubLoginCallback 함수 수정하기 export const githubLoginCallback = (accessToken, refreshToken, profile, cb) => { console.log(accessToken, refreshToken, profile, cb); }; 지난시간에 깃허브 로그인 누르고 콜백함수로 돌아올 때 console에 주어진 정보를 확인만 했었다. 이제 그것을 수정하려고 한다. 사실 accessToken, refreshToken이런건 필요 없고 profile에 있는 github ID, 이메일, 이름, 그리고 아바타(프로필 사진) 이게 중요하다! 그리고 여기서 cb 함수는 passport에서 제공된 callback 함수..
2021.03.11 -
[유튜브 클론코딩] 6.7 Github Login Part.2
6.7 Github Login Part.2 사용자를 깃허브로 보낼 함수 작성하기(githubLogin) 위에서는 사용자가 깃허브에서 돌아왔을 때 실행할 함수를 작성한 거고 사용자를 깃허브로 보낼 함수도 작성해야 할 것이다. userController에서 하나를 더 생성한다. export const githubLogin = passport.authenticate('github'); ↑ userController.js 이전에 local방식으로 인증했던 거랑 똑같은 코드이다. 공식 문서를 보면 이렇게 나와있는데 즉 누군가 저 루트로 접속하면 passport에서 github 방식으로 사용자를 인증해주겠다는 의미이므로 이걸 위한 루트도 만들어야 한다. 깃허브 로그인을 위한 루트 만들기 routes.js에서 먼저 ..
2021.03.11 -
[유튜브 클론코딩] 6.6 Github Login Part.1
6.6 Github Login Part.1 passport-github 설치하기 github로 로그인하는 방식을 구현해볼 거기 때문에 github strategy를 설치해야 한다. 설치: npm install passport-github 📌깃허브로 로그인 하는 흐름 깃허브로 로그인을 시키려고 하면 사용자를 깃허브로 보낼거고, 깃허브가 사용자 정보를 줘도 되겠느냐고 물어보고 사용자는 ok를 할 것이다 그렇게 깃허브가 사용자의 승인을 받으면 사용자를 다시 우리 어플리케이션을 돌려보내는데 그 사용자의 정보도 같이 줄 것이다. 깃허브에서 어플리케이션 등록하기 https://github.com/settings/applications/new 위의 사이트로 들어가서 등록을 하면 clientID와 clientSecre..
2021.03.11