⚡문제정보 두 배열의 교집합을 찾는 문제라고 요약할 수 있을 것 같습니다. 교집합... set을 사용하면 되지 않을까요..? 🔍나의 풀이 var intersection = function(nums1, nums2) { let intersect = function(setA, setB) { let intersection = new Set() setA.forEach(ele => { if(setB.has(ele)) intersection.add(ele) }) return [...intersection] } let setA = new Set(nums1) let setB = new Set(nums2) let answer = intersect(setA,setB) return answer }; 교집합을 찾는 함수를 만들..
⚡문제정보 패턴을 체크해보고 맞으면 true 틀리면 false를 반환해야하는 문제입니다. 다만 교차검증이 필요하겠네요 예를 들어서 예제 3번을 기준으로 word : pattern 키밸류쌍만 만들게되면 dog는 a패턴 cat도 a패턴이 되버리니까요 🔍접근방법 map을 두개 만들어서 매번 패턴과 단어의 일치여부를 교차검증해준다. 🔍나의 풀이 var wordPattern = function(pattern, s) { s = s.split(' ') let map = new Map() let pamap = new Map() if(pattern.length != s.length) return false for(i=0 ; i
⚡문제정보 배열에서 배열길이 / 2 한거보다 많이 등장한 값을 리턴하면 되는 간단한 문제입니다. 🔍나의 풀이 var majorityElement = function(nums) { let map = new Map() for(num of nums) { map.set(num, (map.get(num) || 0 ) +1 ) if( map.get(num) >= (nums.length / 2) ) return num } };
⚡문제정보 아나그램인것들끼리 모아서 배열로 만들어서 리턴해주면 되는 문제입니다. 🔍접근방법 아나그램이라면 sort()했을때 값이 같을것이라고 생각했습니다. sort해주고 map에 sort한 값을 기준으로 모아준 다음 values만 반환하면 답을 만들 수 있을거라고 생각했습니다. 🔍나의 풀이 var groupAnagrams = function(strs) { let map = new Map() strs.forEach(ele => { let spliter = ele.split('').sort().join('') if(!map.get(spliter))map.set(spliter, []) let arr = map.get(spliter) arr.push(ele) }) return [...map.values()] }..
⚡문제정보 중복없는 문자열의 최대 길이를 찾으면 되는 문제입니다. 🔍접근방법 Map이나 set을 사용해서 중복을 마주치는 순간 길이를 저장하면 되지 않을까? 🔍나의 실패한 풀이 var lengthOfLongestSubstring = function(s) { let map = new Map() let count = 0 let answer = 0 if(s.length == 1) return 1 for(i=0 ; i 1) { if(count > answer) { answer = count -1 } map.clear() map.set(s[i] , 1) count = 1 } } return answer }; 이렇게 코드를 짜니까 한번도 중복이 없는 경우나 중복을 만나지 않은 맨 끝 케이스가 제일 길경우 if문에 ..
⚡문제정보 정수로 이루어진 배열 nums가 주어집니다. nums는 1번만 등장하는 숫자 혹은 2번 등장하는 숫자 두가지 패턴으로만 이루어져있는데 2번 등장한 숫자만 담은 배열을 리턴하는 문제입니다. 다만 제한조건이 O(n)으로 제한되어있습니다. 미디엄 문제 치고는 쉽게 풀 수 있네요 🔍접근방법 Map 자료구조를 이용한다. 값은 1번 혹은 2번만 등장하니까 순회하면서 카운트가 2가 되는 순간 정답 배열에 바로 push해준다. 🔍나의 풀이 var findDuplicates = function(nums) { let map = new Map() let answer = [] for( num of nums) { map.set(num, (map.get(num)||0)+1 ) if(map.get(num) > 1) { ..
⚡스코프에 대해 설명해주세요 스코프는 식별자가 유효한 범위를 말합니다. 또는 스코프는 식별자를 검색할 때 사용하는 규칙이라고도 할 수 있습니다. 모든 식별자는 자신이 선언된 위치에 의해 다른 코드가 식별자 자신을 참조할 수 있는 유효 범위가 결정되기 때문입니다. ⚡식별자 결정에 대해 말해주세요 식별자 결정이란 이름이 같은 두개의 변수 중 어떤 변수를 참조할 것인지를 결정하는 것을 말합니다. 자바스크립트 엔진은 스코프를 통해 어떤 변수를 참조할 지를 결정합니다. ⚡스코프가 없으면 어떤 일이 생기나요? 스코프 개념이 없으면 같은 이름을 갖는 변수는 충돌을 일으키므로 프로그램 전체에서 중복되는 이름의 변수를 사용할 수 없게됩니다. ⚡스코프체인에 대해서 설명해주세요 함수는 전역에서 정의할수도, 함수 내부에서 정..