반응형 javascript37 [Javascript] Hash(해시) - 해시 테이블(hash table) 구현하기 해시란? 해시 함수(hash function)는 에서 얻어지는 값은 임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 함수입니다. 해시 함수에 의해 얻어지는 값을 해시라고 부릅니다. 해시함수의 용도 중 하나는 해시 테이블 자료구조에 사용되며, 매우 빠른 데이터 검색을 위한 컴퓨터 소프트웨어에서 널리 사용됩니다. 해시 함수는 큰 파일에서 중복되는 레코드를 찾을 수 있기 때문에 데이터 검색이나 테이블 검색의 속도를 가속합니다. 해시가 데이터 매우 빠른 데이터 검색을 할 수 있는 이유는 데이터를 검색할 때 사용할 key와 실제 데이터의 값(value)이 한 쌍으로 존재하고, key 값이 배열의 인덱스로 변환되기 때문에 검색과 저장의 평균적인 시간 복잡도가 O(1)에 수렴하게 됩니다. const parso.. javascript 2022. 7. 4. [코딩테스트 연습]level 1. 완주하지 못한 선수 문제 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요. 제한사항 마라톤 경기에 참여한 선수의 수는 1명 이상 100,000명 이하입니다. completion의 길이는 participant의 길이보다 1 작습니다. 참가자의 이름은 1개 이상 20개 이하의 알파벳 소문자로 이루어져 있습니다. 참가자 중에는 동명이인이 있을 수 있습니다. 원래는 findIndex 후 splice를 사용해서 동작시키려고 하였다. 결과값은 잘 나왔지.. javascript/프로그래머스 2022. 7. 4. [코딩테스트 연습]level 1. 실패율 https://programmers.co.kr/learn/courses/30/lessons/42889 코딩테스트 연습 - 실패율 실패율 슈퍼 게임 개발자 오렐리는 큰 고민에 빠졌다. 그녀가 만든 프랜즈 오천성이 대성공을 거뒀지만, 요즘 신규 사용자의 수가 급감한 것이다. 원인은 신규 사용자와 기존 사용자 사이에 스 programmers.co.kr 문제: 슈퍼 게임 개발자 오렐리는 큰 고민에 빠졌다. 그녀가 만든 프랜즈 오천성이 대성공을 거뒀지만, 요즘 신규 사용자의 수가 급감한 것이다. 원인은 신규 사용자와 기존 사용자 사이에 스테이지 차이가 너무 큰 것이 문제였다. 이 문제를 어떻게 할까 고민 한 그녀는 동적으로 게임 시간을 늘려서 난이도를 조절하기로 했다. 역시 슈퍼 개발자라 대부분의 로직은 쉽게 구.. javascript/프로그래머스 2022. 6. 28. [코딩테스트 연습]level 1. 예산 문제 S사에서는 각 부서에 필요한 물품을 지원해 주기 위해 부서별로 물품을 구매하는데 필요한 금액을 조사했습니다. 그러나, 전체 예산이 정해져 있기 때문에 모든 부서의 물품을 구매해 줄 수는 없습니다. 그래서 최대한 많은 부서의 물품을 구매해 줄 수 있도록 하려고 합니다. 물품을 구매해 줄 때는 각 부서가 신청한 금액만큼을 모두 지원해 줘야 합니다. 예를 들어 1,000원을 신청한 부서에는 정확히 1,000원을 지원해야 하며, 1,000원보다 적은 금액을 지원해 줄 수는 없습니다. 부서별로 신청한 금액이 들어있는 배열 d와 예산 budget이 매개변수로 주어질 때, 최대 몇 개의 부서에 물품을 지원할 수 있는지 return 하도록 solution 함수를 완성해주세요. sort() 함수를 사용해서 배열을 .. javascript/프로그래머스 2022. 6. 27. [Javascript] 배열 정렬하기 sort() sort() 메소드는 배열의 요소를 적절한 위치에 정렬한 후 그 배열을 반환합니다. 정렬은 stable sort가 아닐 수 있습니다. 기본 정렬 순서는 문자열의 유니코드 포인트를 따릅니다. 정렬 속도와 복잡도는 각 구현방식에 따라 다를 수 있습니다. array.sort([compareFunction]) compareFunction : 정렬 순서를 정의하는 함수. 생략하면 배열은 각 요소의 문자열 변환에 따라 각 문자의 유니 코드 코드 포인트 값에 따라 정렬됩니다. 반환 값 : 정렬한 배열. 원 배열이 정렬됩니다. 복사본이 만들어지는 것이 아닙니다. 숫자 오름차순 정렬하기 (Infinity 및 NaN이 포함되어 있지 않은 경우) function compareNumbers(a, b) { return a - .. javascript 2022. 6. 27. [코딩테스트 연습]level 1. K번째수 문제: 배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하려 합니다. 예를 들어 array가 [1, 5, 2, 6, 3, 7, 4], i = 2, j = 5, k = 3이라면 array의 2번째부터 5번째까지 자르면 [5, 2, 6, 3]입니다. 1에서 나온 배열을 정렬하면 [2, 3, 5, 6]입니다. 2에서 나온 배열의 3번째 숫자는 5입니다. 배열 array, [i, j, k]를 원소로 가진 2차원 배열 commands가 매개변수로 주어질 때, commands의 모든 원소에 대해 앞서 설명한 연산을 적용했을 때 나온 결과를 배열에 담아 return 하도록 solution 함수를 작성해주세요. ------------- commands를 돌면서 i,j에 맞춰.. javascript/프로그래머스 2022. 6. 23. [코딩테스트 연습]level 1. 없는 숫자 더하기 문제: 0부터 9까지의 숫자 중 일부가 들어있는 정수 배열 numbers 가 매개변수로 주어집니다. numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요. ----- 0부터 9까지의 합이 45이기 때문에 고정값으로 주고, array에 0을 넣은 후에 54에서 array에 들어가는 숫자들을 빼는 과정으로 프로그래밍을 했다. function solution(numbers) { let resArr = [0,0,0,0,0,0,0,0,0,0,0]; for(let a = 0; a{ answer -= data; }) return answer; } 결과는 정답으로 처리가 되었지만, 다른사람들이 코딩한 것을 보았는데 45에서 그냥 array를.. javascript/프로그래머스 2022. 6. 22. [Javascript] 빈 객체 체크하는 방법 Javascript 에서 빈 객체를 체크하는 방법들을 소개하겠습니다. 1. Object.keys() 함수 function isEmptyObject(obj){ if(obj.constructor === Object && Object.keys(obj).length === 0) return true; return false; } let obj1 = {}; if(isEmptyObject(obj1)===true) console.log('empty object'); Object.prototype.constructor 인스턴스의 프로토타입을 만든 Object 함수의 참조를 반환합니다. 이 속성값은 함수 자체의 참조입니다. 함수 이름을 포함하는 문자열이 아니라 그 값은 1, true, 'test'와 같은 원시값에 대해서.. javascript 2022. 1. 28. [Javascript] 배열 ... 사용하기 ( 전개 구문 ) ES6의 전개연산자로, 인자로 배열을 사용하고 싶을 때나 배열을 정의하는 리터럴 내에서 사용할 수 있습니다. 표현식은 아래와 같습니다. 1. 함수를 호출하는 인자로 배열을 사용할 때 myFunction(...iterableObj); 기존 자바스크립트 문법으로 add 함수를 정의하고, arr 배열도 정의 했습니다. add 함수를 호출할 때 인자값으로 arr 배열의 원소들을 사용하려면 함수에 기본 메서드인 apply를 활용해야 했습니다. function add(a,b,c){ return a+b+c; } let arr = [2,4,5]; add.apply(null, arr); //11 이것을 전개연산자를 이용하면 다음과 같이 표현됩니다. function add(a,b,c){ return a+b+c; } let.. javascript 2022. 1. 24. [Javascript] 문자열 숫자로 변환하기 ParseInt(ParseFloat) vs Number vs Number.parse ParseInt() /ParseFloat() 숫자와 문자 중 숫자만 인식하여 숫자로 리턴해 줍니다. parseInt("2022년"); //2022 (숫자 리턴 완료) 하지만 문자가 앞에 있는 경우는 불가능합니다. parseInt('제2022년'); // NaN (Not a Number 리턴) parseInt는 10 이하의 소수점은 반환하지 못합니다. 그러나 parseFloat를 사용하면 소수점 반환이 가능합니다. parseInt("10.234");// 10 parseFloat("10.234"); // 10.234 Number() 이 메소드는 무조건 숫자로 이루어진 것만 숫자로 리턴해 줍니다. Number("2022"); // 2014 (숫자 리턴 완료) Number("2022년");// NaN (Not .. javascript 2022. 1. 17. [Javascript] 열거형 Enum Javascript 에서 enum을 사용하기 Enum Enum은 enumerated type의 줄임말입니다. 말 그대로 열거하는 타입이라는 의미를 가집니다. 무엇을 열거한다는 것일까요? 상수 값 중에서 비슷한 종류들을 묶어두기 위한 용도로 자주 사용됩니다. 자바스크립트에서의 enum 타입은, 고유한 타입이 아닙니다. 자바에서는 enum 타입을 제공하지만, 자바스크립트에서는 정의되어 있지 않습니다. 하지만 이 자료형과 조금이나마 비슷하게 작동할 수 있는 데이터를 자바스크립트에서도 간단하게 만들 수 있기 때문에 정리해보았습니다. (타입으로 정의되어 제공하는 언어들보다는, 훨씬 기능이 적을 수 밖에 없습니다.) Enum을 사용하는 이유? 위에서 언급한 듯이, 상수 값을 모아두고 써야 할 때 유용합니다. enu.. javascript 2022. 1. 14. [Javascript] fetch 자바스크립트를 사용하면 필요할 대 서버에 네트워크 요청을 보내고 새로운 정보를 받아오는 일을 할 수 있습니다. 네트워크 요청은 다음과 같은 경우에 이뤄집니다. 주문 정보 사용자 정보 읽기 서버에서 최신 변경분 가져오기 etc.. 그런데 이 모든 것들은 페이지 새로 고침 없어도 가능합니다. AJAX(Asynchronous Javascript And XML, 비동기적 Javascript와 XML)라는 용어를 들어보았을 겁니다. AJAX는 서버에서 추가 정보를 비동기적으로 가져올 수 있게 해주는 포괄적인 기술을 나타내는 용어로, 만들어진지 오래되었습니다. AJAX 이외에도 서버에 네트워크 요청을 보내고 정보를 받아올 수 있는 방법은 다양합니다. 이번에는 fetch() 메서드에 대해 글을 작성해보았습니다. fe.. javascript 2022. 1. 13. 이전 1 2 3 4 다음 반응형