set객체는 중복되지 않는 유일한 값들의 집합이다. 배열과 유사하지만 중복된요소를 가질 수 없다는점, 순서에 의미가 없다는 점, 인덱스로 접근이 불가능하다는 점이 다르다. Set은 수학적 집합을 구현하기위한 자료구조이다. 여집합, 차집합, 교집합, 합집합 등을 구현할 수 있다. Set 객체 생성 set 생성자 함수로 생성한다. 함수에 전달된 인수가 없다면 빈 Set객체가 생성된다. 중복된 배열을 인수로 준다면 저장되지 않는다. Set의 프로토타입을 살펴보면 다양한 메서드들이 있는데 이번 코플릿 문제에서 Set.has을 활용한 문제가 있었다 🏋🏽문제 두 개의 배열(base,sample)을 입력받아 sample이 base의 부분집합인지 여부를 리턴 Set.has는 Set객체에 특정 요소 존재 여부를 확인하고..
문제 피보나치수열을 메모이제이션을 이용해 구현 나의 풀이 let memo = [0,1] function fibonacci(n) { // TODO: 여기에 코드를 작성합니다. if(memo[n] === undefined){ memo[n] = fibonacci(n-2)+fibonacci(n-1) }return memo[n] } 알게된 점 메모이제이션이란 계산된 값을 이전에 계산된 결과를 저장하는것 let memo 배열은 인덱스 값과 같이 피보나치 수열의 n=0, n=1의 값을 기억하고 n번째 값이 없을때 피보나치 수열의 값을 만들어 나갔다. 재귀는 어려워!
🏋🏽문제 문자열을 입력받아 문자열에서 숫자를 모두 찾아 더한 뒤에 해당 값을 숫자와 공백을 제외한 나머지 문자열의 길이로 나눈 값을 반올림으로 리턴 🔍나의 풀이 1. 일단 문자열에 있는 숫자는 문자열이기 때문에 그걸 뽑아서 숫자열로 변환해준다. 2. 숫자를 찾아 빈공백으로 처리해서 문자열만 추출한다. 3. 1에서 추출한 숫자열들의 합을 구한다. 4. 2에서 추출한 빈공백 제외의 문자열의 길이를 구한다. 5. 3에서 2를 나눈 후 Math.round메소드를 통해 반올림해준다.' 💡알게 된 점 여기서 사용한 메소드 설명 match() replace() 정규표현식
Airport API 공항이름 자동완성 클라이언트에 공항 이름을 검색할 때, 자동 완성 기능이 동작하게 하는 API http://localhost:3001/airport?query=c 에서 req.query 는 http://localhost:3001/airport?query=c 노란색 부분인 qeury=c를 의미하고 req.query.qeury는 http://localhost:3001/airport?query=c 빨간 부분인 c를 의미한다. 즉 요청객체의 쿼리 파라미터에 글자를 추가하면 해당 문자열이 포함된 공항목록을 보여준다. 위 예제로 get요청을 보낸 뒤 console.log(req.query.qeury)를 확인해보면 터미널에서 확인 할 수 있다. 공항 목록에서 c가 포함된 공항목록을 볼 수 있다...
🏋🏽문제 수를 입력받아 제곱근의 값을 소수점 두 자리까지 리턴 🔍나의 풀이 function computeSquareRoot(num) { return Number(Math.pow(num,0.5).toFixed(2)) } Math.pow는 첫번째 인자의 두번째인자제곱인 값이다. 즉 Math.pow(2,4)일때 2의 4제곱인 것이다. 제곱근은 해당숫자의 2분의 1제곱이므로 첫번째 숫자로 전달받을 변수이름을 두번째 인자로 2분의1을 의미하는 0.5를 넣어준다. 조건에서 소수점 두자리까지 반올림하라고 하였으니 toFixed메소드를 사용한다. 💡알게된 점 Math.pow 메소드를 알기 전까지 2시간 가량 바빌로니아 법의 점화식과 제곱근가지고 어떻게 코드를 써야할지 머리를 싸맸는데 이런 메소드가 있으면 얼마나 좋을까..
🏋🏽문제 문자열을 입력받아 알파벳을 한번씩만 이용해서 만든 단어나 문구인 아이소이그램인지 여부 리턴 🔍나의 풀이 한 문자열 내에 같은 알파벳이 있으면 안되니까 이중반복문을 사용해서 하나씩 검사했을때 같은 알파벳 발견시 바로 false를 리턴하는 로직 구현 💡깨달은점 레퍼런스를 보니까 빈 객체를 선언해주고 빈 객체에 값으로 boolean 값을 주고있었다. 이중반복문을 이용안해도 되는 너무나도 편리한 객체의 이용법....! 객체 활용을 잘하자..!
🏋🏽문제 두수(num1,num2) 를 입력받아 num1을 num2로 나눈 나머지를 리턴한다. 🔍나의 풀이 num2는 num1을 여러번 곱했을때 num2보다 작은 상태에서 그 값을 빼주면 나머지가 될거라 생각(복잡..) 1. 일단 조건에 있는 num2가 0일때 경고문 문자열 작성 2. num1이 0일때(0은 무슨수로 나누든 나머지0) 또는 num1과 num2가 같을때는 0을 리턴 3. 반복문을 돌려서 몫을 구함 4. 조건이 맞을때 무조건 1이 더해지므로 5. num1에서 num2를 몫인 n-1번 곱한것을 뺀것은 나머지 값이다! 💡알게된 점 복잡하게 쓴 나의 로직은 오늘도 레퍼런스에 패해버렸고! 테스트 패스하는것에만 일단 신경쓰라는 말을 되뇌이어봅니다..
🏋🏽문제 각 요소가 이전 요소들의 합보다 큰지 여부를 리턴 🔍나의 풀이 누적값을 설정하고 반복문을 돌때마다 해당 요소가 누적값(이전 요소들의 합)보다 같거나 작은지 검사한다. 1. 배열의 첫번째 요소를 누적값의 초기값으로 설정한다. 2. 반복문으로 sum변수에 초기값과 해당요소의 값을 더해준다. 3. 누적되어진 sum값은 if문에서 다음요소의 값보다 크거나 같은지 검사하여 4. 조건이 안맞을 경우 다시 반복문으로 돌아가 누적값을 더해준다. 5. 조건이 맞을 경우 result값을 false로 재할당해주고 6. 바로 반복문을 끝낸다. 💡느낀점 일단 반복문을 돌려야 할것 같았다. 근데 누적값이 필요하니까 reduce도 써봤는데 점점 더 복잡해져갔다. 누적할때마다 if문으로 조건을 걸어서 충족시 바로 break..
🏋🏽문제 문자열을 요소로 같는 배열을 입력받아 문자열을 세로로 읽었을 때의 문자열을 리턴 🔍나의 풀이 처음에 배열의 요소가 2개까지만 들어오는줄 알았다가, 테스트 돌리고나서 뒤늦게 가장 긴 요소를 찾는 조건 추가해줬다.🤯 1. 가장 긴요소의 길이를 찾아서 (Math.max) 배열의 요소중 가장 긴 것을 찾아야 하므로 for문을 돌려 배열에 요소의 길이를 push 해준다. Math.max 메서드로 배열의 요소중 가장 큰 값을 찾아 maxNum에 할당해준다. 2. 2중 for문으로 문자열을 만들어 준다. 가장 긴 문자열의 길이만큼 돌면서 배열의 길이만큼 각 요소를 돌아 해당 문자열을 더해준다. 3. 결과값을 리턴한다. 💡 알게된 점 알고리즘도 하다보면 익숙해지는것 같다 점점 레퍼런스를 안보게 된다 감격🥹