javascript
[leetcode] Top K Frequent Elements
리트코드 문제: Top K Frequent Elements이 문제는 배열에서 자주 등장하는 k개의 요소를 찾는 문제입니다. 예를 들어, 배열 [1,1,1,2,2,3]과 k = 2가 주어진다면, 가장 빈번하게 등장한 숫자는 1과 2이므로 [1, 2]가 답이 됩니다.문제 분석이 문제는 배열의 각 요소가 몇 번 등장하는지를 계산하고, 그중에서 자주 등장한 k개의 요소를 추출하는 문제입니다.풀이 접근빈도 계산먼저 배열에서 각 숫자가 몇 번 등장했는지를 파악해야 합니다. 이를 위해 **해시맵(Map)**을 사용해 각 숫자의 빈도를 기록할 수 있습니다.빈도별 정렬각 숫자의 등장 횟수를 기준으로 배열을 정렬한 후, 그중에서 가장 빈번하게 등장한 k개의 요소를 추출하면 됩니다.코드 설명var topKFrequent =..
[leetcode] Longest Substring Without Repeating Characters
리트코드 문제: Longest Substring Without Repeating Characters이 문제는 주어진 문자열에서 중복된 문자가 없는 가장 긴 부분 문자열을 찾는 문제입니다. 예를 들어, 문자열 "abcabcbb"가 주어졌다면 "abc"가 가장 긴 부분 문자열로, 답은 3입니다.문제 분석주어진 문자열에서 중복되지 않은 문자가 포함된 가장 긴 부분 문자열을 찾는 것이 목표입니다. 즉, 중복 문자가 나타나면 이전에 찾았던 부분 문자열을 중단하고, 중복이 없도록 시작 위치를 다시 조정해야 합니다.풀이 접근이 문제는 슬라이딩 윈도우와 같은 방식으로 해결할 수 있습니다. 슬라이딩 윈도우는 문자열에서 특정 범위를 탐색하면서 중복된 문자를 만나면 그 범위를 조정하는 방식입니다.문자열을 탐색하면서 중복 체..
this
this 실행 컨텍스트의 thisBinding에는 this로 지정된 객체가 저장된다. 실행 컨텍스트 활성화 당시에 this가 지정되지 않은 경우 this에는 전역 객체가 저장된다. 그 밖에는 함수를 호출하는 방법에 따라 this에 저장되는 대상이 다르다. 다른 대부분의 객체지향 언어에서 this는 클래스로 생성한 인스턴스 객체를 의미한다. 클래스에서만 사용할 수 있기 ㄸ애문에 혼란의 여지가 없거나 많지 않다. 그러나 자바스크립트에서의 this 는 어디서든 사용할 수 있다. 상황에 따라 this 가 바라보는 대상이 달라지는데, 어떤 이유로 그렇게 되는지를 파악하기 힘든 경우도 있고 예상과 다르게 엉뚱한 대상을 바라보는 경우도 있다. ! 상황에 따라 달라지는 this 자바스크립트에서는 기본적으로 실행 컨텍스..
[javascript] 프로그래머스 - 네트워크
🤔문제 해결 Lv3 | DFS 몇개의 싸이클이 있는 지 찾아야 한다. DFS(BFS)를 이용해도 무방하다. 전체 네트워크 중 하나를 차례로 선택한다. DFS로 visited를 체크하며 돌린다. DFS가 끝나면 그게 한 싸이클이 된다. (네트워크의 수) 아직 방문하지 않은 나머지 네트워크를 하나씩 차례로 선택하면서 위의 과정을 반복한다. 💻소스 코드 function solution(n, computers) { var answer = 0; let visited = Array(n).fill(0) let stack = [] for (let i = 0; i 0)..
[javascript] 프로그래머스 - 단어 변환
🤔문제 해결 Lv3 | BFS begin 에서 시작하여 BFS 탐색 BFS는 target과의 거리를 알 수 있으므로 target과의 최단거리를 구해서 답을 출력 아래의 코드에서는 visited와 words_obj를 사용했지만 잘 짜보면 words_obj 하나로 충분히 구현할 수 있다! 💻소스 코드 function solution(begin, target, words) { var answer = 0; // 타겟이 워드에 없는 경우 if (!words.includes(target)) { return answer } let n = words.length // visited 와 queue let visited = Array(n).fill(0) let q = [begin] // 단어의 인덱스를 객체에 저장 con..
[JavaScript] 프로그래머스 - 베스트앨범
문제 해결 1. 해시 2. 주어진 genres와 plays를 객체 형태로 만든다. (1) ex) { 장르이름: { 총 재생 횟수: 500, 노래들: [[200, 1], [300, 5]] } 3. 만들어진 객체를 총 재생 횟수로 내림차순 정렬한다. 4. 각각의 장르에서 노래를 두개씩 뽑아 answer 에 넣는다. (1) 각각의 장르에서 노래들을 꺼내 내림차순 정렬한다. (2) 그 때 재생횟수가 같다면 인덱스로 오름차순 정렬한다. (3) 정렬 후 노래를 두개 꺼내 answer 에 넣는다 (4) 만약 노래가 하나라면 정렬하지 않고 그냥 넣는다. ( 두개 일 경우에도 정렬은 필요 없으나 노래가 하나인지 그 이상인지가 중요하므로) 🌤 문제를 풀어 본 후 여러가지 풀이를 찾았다. 자바스크립트를 공부하는 목적은 알고..