본문 바로가기

Javascript26

[JavaScript/알고리즘] BinaryGap 먼저 아래는 Codility의 데모 문제들을 풀어볼 수 있는 사이트입니다.  Developer Training | Test Coding Skills Online - CodilityFind longest sequence of zeros in binary representation of an integer.app.codility.com 사이트의 첫 번째 문제, BinaryGap (Easy) 입니다.Easy라고는 하는데 영문으로 된 문제는 처음 풀어봐서 좀 어지럽습니다. https://app.codility.com/demo/results/trainingFQ7EBE-YTU/ Test results - CodilityA binary gap within a positive integer N is any maxima.. 2025. 1. 3.
[JavaScript/알고리즘] K번째수 (feat. sort() 메소드) 프로그래머스 Lv.1 "K번째수" 문제입니다. Solved-Algorithm/JavaScript/프로그래머스/1/42748. K번째수 at main · ParkBible/Solved-AlgorithmThis is an auto push repository for Baekjoon Online Judge created with [BaekjoonHub](https://github.com/BaekjoonHub/BaekjoonHub). - ParkBible/Solved-Algorithmgithub.com??? : 어 겁나 쉽네   function solution(array, commands) { const results = []; for (command of commands) { c.. 2024. 12. 17.
[JavaScript/알고리즘] 의상 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 이번에도 DFS 상태트리로 완전탐색을 시도하였습니다.function solution(clothes) { // 종류에 따라 의상 분류 const classifiedClothes = {}; for (let cloth of clothes) { if (!classifiedClothes[cloth[1]]) { classifiedClothes[cloth[1]] = []; } classifiedClothes[cloth[1]].push(cloth[0]); } .. 2024. 11. 17.
[JavaScript/알고리즘] 전화번호 목록 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 어떤 문자열이 리스트 내 다른 문자열의 접두어가 되는 경우 false, 그런 경우가 없다면 true를 출력하는 문제.function solution(phone_book) { for (let i=0; i 최소직사각형 문제처럼 답은 맞지만 효율성 테스트에서 시간초과 에러 발생함.  정답 힌트리스트를 사전순으로 정렬한 뒤, 다음 인덱스에 해당하는 요소와 비교하는 것만으로도 해결 가능한 문제.즉, "정렬" 하는 것이 알고리즘 해결에 좋은지 생각하기  정답function solution(phone_book) { phone_book.sort(); .. 2024. 11. 14.
[JavaScript/알고리즘] 최소직사각형 프로그래머스 Lv.1 "최소직사각형" 문제 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 주어진 여러 사이즈의 명함들의 가로세로 길이를 모두 수납할 수 있는 가장 작은 사이즈의 지갑을 만드는 알고리즘입니다.위 예시에서 2번 명함을 가로로 눕힌다면 80(가로)*40(세로) 크기의 지갑으로 모든 명함을 수납할 수 있습니다. 변명이지만 이 문제는 알고리즘 고득점 kit의 '완전탐색' 으로 분류되어 있었습니다.function solution(sizes) { const ch = []; let res = Infinity; const dfs = (lv) => { if (lv ==.. 2024. 11. 9.
[JavaScript] 스택, 큐 구현 1. 스택const stack = [];stack.push(3);stack.push(2);stack.pop();console.log(stack.reverse()); // [2, 3] push(), pop() 메소드로 구현할 수 있다.  2. 큐push(), shift() (맨 앞에 있는 요소 추출) 를 사용하여 구현할 수 있지만, shift()는 O(n)의 시간복잡도를 가지고 있다. 시간상 이점을 가져오고 싶다면 연결 리스트로 큐를 만든다.class Node { constructor(data) { this.data = data; this.next = null; }}class Queue { constructor() { this.front = null; .. 2024. 10. 1.
[JavaScript] 코딩테스트에 유용한 자바스크립트 문법 파이썬에 이어 작성하는 자바스크립트 문법,,이번에도 필자가 몰랐던 부분 위주로 정리함.(계속 추가됨)  [Python] 코딩테스트에서 알아놓으면 유용한 파이썬 문법※ 파이썬 복습 겸 필자가 몰랐던 것 위주로 정리 람다 함수(lambda x, y: x + y)(1,2) # 3(lambda li: li[1])([1,2,3]) # 2  리스트 관련elements = ["a", "b", "c"]# 리스트 요소의 인덱스elements.index("요소명")# 리스트doringri.tistory.com 리스트 관련const elements = ["a", "b", "c"];// 리스트 특정 위치에 요소 추가 및 삭제// elements.splice(인덱스, 제거할 요소의 개수, 추가할 요소들...);elements... 2024. 9. 25.
[JavaScript] 웹팩(Webpack) 구성하기 웹팩(Webpack)은 대표적인 자바스크립트 번들링 툴이다.React 같은 프레임워크에서는 웹팩이 기본적으로 세팅되어 있지만, 바닐라 자바스크립트로 개발할 때도 번들링 툴을 설치하여 번들 파일을 만드는 것이 권장된다.  왜 번들링 툴이 권장되는가?지난 포스팅에서 라이브러리를 쉽게 사용하기 위해 npm을 사용하고, npm 사용 시 나오는 node_modules가 너무 무겁기에, 실제 필요한 코드들만 하나의 js 파일로 만들어주는 역할을 번들링 툴이 한다고 언급했었다. 모든 라이브러리를 CDN 링크로 받아오는 게 아닌 이상 번들링 툴은 필수적으로 사용된다.전통적인 방법은 CDN으로 이루어졌는데, 여기에는 문제가 있다.js 파일에서 라이브러리를 사용하려면 무조건 html에서 링크를 받아와야 하기 때문에, 결국.. 2024. 9. 16.
[JavaScript] 클로저를 통해 코드 최적화(Optimizing)하기 클로저(Closure)를 응용하여 반복되는 사전작업(변수 정의)을 피하는 방법을 사용해 본다.// 함수 호출 시마다 a, b라는 변수가 계속 정의된다.const compare = (x) => { const a = 10; const b = 20; return x > a && x > b ? "bigger" : "smaller";}console.log(compare(30));console.log(compare(5));↓// 클로저를 이용한다.// a와 b의 값은 compare 내부 스코프에 한 번 저장된다.// 그러면 return 안의 anonymous 함수가 compare의 렉시컬 환경에서 a, b의 값을 참조해 온다.const compare = (x) => { const a = 10;.. 2024. 4. 29.
[JavaScript] 함수 선언문 vs 함수 표현식 (feat. 호이스팅, 렉시컬 환경) 자바스크립트는 위에서부터 아래로 순차적으로 코드를 해석하는 인터프리터(Interpreter) 언어입니다. 하지만 모든 코드가 순차적으로 동작하는 건 아닌데요, 그 이유는 호이스팅(Hoisting) 이라는 알고리즘이 정의된 함수와 변수들을 모두 찾아서 먼저 선언시키기 때문입니다. (※ 코드 위치 자체가 끌어올려지는 건 아니며, 렉시컬 환경(Lexical Environment)에 등록되는 것입니다. 렉시컬 환경에는 어떤 스코프 범위에서 사용될 변수와 함수들이 저장되며, 스코프의 개수만큼 생성됩니다. 예를 들어, 함수가 하나 있다면 그 함수 내부의 렉시컬 환경, 그리고 함수 밖의 전역 렉시컬 환경까지 총 두 개가 생깁니다.) 아래의 코드에서는 함수 선언문으로 greet()라는 함수를 만들었습니다. greet(.. 2024. 4. 23.
[JavaScript] Promise 객체 함수 a()의 파라미터로 b()라는 함수를 줄 때 b()를 콜백 함수라고 한다. 콜백 함수는 보통 비동기 작업 시 함수의 실행 순서를 지정해주기 위해 사용한다. 그런데 비동기 작업이 여러 개일 때 이들의 순서를 모두 콜백 함수로 지정하려고 한다면 계속 중첩되어, 코드가 알아보기 힘들어질 것이다. function test(message, callback) { axios.get("http://127.0.0.1:8080").then((response) => { callback(message); }); } test("1", function(result) { console.log(result); test("2", function(result) { console.log(result); test("3", functi.. 2024. 1. 23.