본문 바로가기
728x90
반응형

DEV83

[FE] this 정리하기 this란?this는 자바스크립트에서 현재 실행 중인 컨텍스트의 객체를 참조하는 특별한 식별자입니다. this의 값은 함수가 호출되는 방식에 따라 동적으로 결정되는데, 일반 함수에서는 전역 객체를, 메서드로 호출될 때는 해당 메서드를 소유한 객체를, 화살표 함수에서는 상위 스코프의 this 값을 참조합니다. 또한 call(), apply(), bind() 메서드를 통해 this의 바인딩을 명시적으로 변경할 수 있어 유연한 객체 지향 프로그래밍을 가능하게 합니다.this 바인딩이란?this 바인딩은 this 키워드가 실제로 가리키는 대상을 결정하는 과정입니다. JavaScript에서 this는 코드가 작성된 시점이 아닌, 함수가 실행되는 시점에 바인딩이 결정됩니다. 즉, 동일한 함수라도 어떻게 호출되느냐에.. 2025. 2. 4.
[FE] 자바스크립트 비동기 개념 정리 하기 들어가며스터디에서 동기, 비동기 개념을 다루는 김에 전에 작성해둔 글들과 여러 참고 자료들을 보면서 자바스크립에서의 비동기 개념에 대해서 정리해보는 시간을 가져 봤습니다. 조금 더 추가해야 되는 내용들이 많지만 작성해두고 개선을 해나가보려고 합니다. 자바스크립트에 동기, 비동기 개념이 있는 이유자바스크립트는 싱글 스레드 언어이기 때문에 한번에 하나의 작업만 수행 할 수 있다. 즉 이전 작업이 완료 되어야 다음 작업을 수행 할 수 있게 된다.우리가 프로그래밍을 하면서 일반적으로 위에서 아래로 차례대로 실행 되는 방식, 이러한 코드 순차 실행을 동기라고 부른다.동기 방식은 직관적이지만 다수의 작업이 이루어진다면, 특정 작업이 마무리 될 때 까지 다음 작업이 이루어 질 수 없기 때문에 성능과 사용자 경험에 영.. 2025. 1. 30.
[백준] 13023 - 백트래킹 적용하기 들어가며안녕하세요, 오늘은 DFS(깊이 우선 탐색)와 백트래킹을 활용하여 친구 관계 탐색 문제를 해결하는 과정을 단계별로 살펴보겠습니다. dfs, bfs 문제를 풀고 백트래킹 문제를 풀려고 했는데 이렇게 바로 풀게 되었습니다.🤔 Before: 처음 마주친 문제 상황문제는 다음과 같습니다:N명의 사람들 사이의 친구 관계가 주어집니다.한 사람에서 시작하여 친구 관계를 4번 이상 거쳐갈 수 있는지 확인해야 합니다.가능한 경로가 존재하면 1, 없으면 0을 출력합니다.처음에는 단순히 DFS를 구현하면 될 것이라 생각했지만, 여러 문제점들에 직면했습니다:한 시작점에서만 탐색을 시작하여 모든 가능한 경로를 찾지 못했습니다.메모리를 많이 사용하는 인접 행렬 방식을 사용했습니다.이전 경로로 돌아가서 다른 경로를 탐색하.. 2025. 1. 27.
[백준] 18511, 1260, 2606 / DFS, BFS 정리 / JavaScript DFS와 BFS의 실전적 이해: 백준 문제 풀이를 통한 완전 탐색 전략들어가며백준 문제를 풀면서 Greedy, DP 문제를 풀다가 드디어 항상 어려워했던 DFS, BFS 문제로 넘어오게 되었습니다. 완전 탐색 문제들을 풀면서 상황에 따라 DFS, BFS를 사용해야 할 필요를 느꼈고, 항상 개념만 알고 코드로 풀어내는 경험이 부족했던 것 같아서 정리하면서 글로 작성해보려고 합니다.DFS와 BFS의 기본 개념간단하게 이해하자면:DFS(깊이 우선 탐색): 경우의 수를 구할 때 그래프를 그린다면 나올 수 있는 가장 깊은 곳까지 갔다가 돌아오는 느낌BFS(너비 우선 탐색): 경우의 수를 구할 때 그래프를 그린다면 한 층씩 마무리해가면서 다음 단계로 넘어가는 느낌코드로 보는 실제 구현실제 구현에서 DFS와 BFS는.. 2025. 1. 25.
[백준] 1912 - dp const fs = require('fs');const filePath = process.platform === 'linux' ? 'dev/stdin' : '../input.txt';const input = fs.readFileSync(filePath).toString().trim().split('\n');let N = parseInt(input[0]);//N만큼 배열에 담아주기let dp = new Array(N).fill(0);//N만큼 값 담아오기let list = input[1].split(' ').map((item) => parseInt(item));//dp[0]은 list[0]으로 초기화dp[0] = list[0];//dp[i]는 dp[i-1]과 list[i]를 비교해서 큰 값을 넣어준다.fo.. 2025. 1. 22.
[백준] 2748, 10870 - 피보나치 문제 풀기 2748번 const fs = require('fs');const filePath = process.platform === 'linux' ? 'dev/stdin' : '../input.txt';const input = fs.readFileSync(filePath).toString().trim().split('\n');let N = parseInt(input[0]);let list = [0, 1, 1];for (let i = 3; i 10870번const fs = require('fs');const filePath = process.platform === 'linux' ? 'dev/stdin' : '../input.txt';const input = fs.readFileSync(filePath).toStri.. 2025. 1. 20.
728x90
반응형