Algorithm Problem/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입니다.문제 분석주어진 문자열에서 중복되지 않은 문자가 포함된 가장 긴 부분 문자열을 찾는 것이 목표입니다. 즉, 중복 문자가 나타나면 이전에 찾았던 부분 문자열을 중단하고, 중복이 없도록 시작 위치를 다시 조정해야 합니다.풀이 접근이 문제는 슬라이딩 윈도우와 같은 방식으로 해결할 수 있습니다. 슬라이딩 윈도우는 문자열에서 특정 범위를 탐색하면서 중복된 문자를 만나면 그 범위를 조정하는 방식입니다.문자열을 탐색하면서 중복 체..
[javascript] 프로그래머스 - 괄호 회전하기(월간 코드 챌린지 시즌2)
🤔문제 해결 괄호 회전 괄호 체크 스택을 이용하여 괄호의 짝이 맞는지 체크 주어진 괄호(회전을 마친 괄호)를 쪼개서 하나씩 가져온다 가져온 괄호가 왼쪽 괄호이면 스택에 넣고 오른쪽 괄호이면 스택의 제일 위에있는 괄호와 비교하여 짝이 맞는지 체크 짝이 맞지 않으면 올바른 괄호가 아니다. 스택이 비어있으면 올바른 괄호가 아니다. 괄호 체크가 끝나고 스택에 남아있는 괄호가 있으면 올바른 괄호가 아니다 💨 오브젝트의 키, 밸류 가져오기: Object.keys(my_object), Object.values(my_object) 💨 배열에 특정 요소 포함 여부: my_list.includes(my_elem) 💻소스 코드 function solution(s) { var answer = 0; var length = s...
[javascript] 프로그래머스 - 거리두기 확인하기(2021 카카오 채용연계형 인턴십)
🤔문제 해결 한 방안의 모든 P에 대하여 차례로 주변을 탐색했다. 약간 BFS 느낌🤔 O를 만나면 계속탐색 P를 만나면 멈춘다. - 거리두기 지켜지지 않음 탐색 중 P에 대하여 거리가 2가 되면 더 이상 그 지점에서는 탐색을 멈춘다. 그러므로 탐색 중 다른 P를 만났다는 말은 거리가 2 이하이기 때문에 탈락 X는 무시 💨 파이썬으로 풀던 느낌으로 풀었다. break를 한번에 걸어주는 방법이 없나... 💻소스 코드 function solution(places) { var answer = []; var length = places[0].length; var dx = [-1, 1, 0, 0] // 상 하 좌 우 var dy = [0, 0, -1, 1] for (var place of places) { var ..
[javascript] 프로그래머스 - 숫자 문자열과 영단어(2021 카카오 채용연계형 인턴쉽)
🤔문제 해결 문자열에서 특정 문자(들)를 찾아 바꾸는 replace 를 사용 대응되는 문자-숫자 오브젝트를 만들고 변수를 치환하고 싶은 문자로 사용하기 위해서 정규 표현식을 이용했다. 💨 💻소스 코드 function solution(s) { var replaceObj = { zero: 0, one: 1, two: 2, three: 3, four: 4, five: 5, six: 6, seven: 7, eight: 8, nine: 9, } for (var key in replaceObj) { s = s.replace(new RegExp(key, "g"), replaceObj[key]); // g는 옵션, g를 안넣으면 처음 만나는 문자 1개만 바꾼다. } return parseInt(s); } 📕문제 확인 ..
[javascript] 프로그래머스 - 행렬 테두리 회전하기(2021 Dev-Matching: 웹 백엔드 개발자(상반기))
🤔문제 해결 Array.from 을 이용하여 2차원 행렬 만들기 테두리 가져오기 범위 내에서 테두리만 오른쪽, 아래, 왼쪽, 위로 차례로 이동 이동하면서 값을 리스트에 저장, 2차원 배열의 값을 바꿔준다(회전) 리스트의 가장 작은 값을 answer 에 저장 💨 2차원 배열 만들기 Array.from, 배열의 최소값 구하기 Math.min.apply(null, []); 이것 보다는 Math.min(...[]); 이 좋아보임(일단 가독성) 💻소스 코드 function solution(rows, columns, queries) { var answer = []; // 1씩 증가하는 2차원 행렬 만들기 const arr = Array.from(Array(rows), () => new Array(columns));..