Loading...

[LeetCode] 125. valid palindrome (javascript)

leetcode.com/problems/valid-palindrome/submissions/ 1. 정규표현식 이용하지 않음. 대문자로 변환한 뒤 if문으로 문자와 숫자 검사 s=s.toUpperCase(); arr=[] for(let i=0;i='A' && s[i]='0'&& s[i]

[프로그래머스] 내적 (파이썬 ,python, javascript)

1. 파이썬 풀이 각 위치의 수를 곱한 뒤 더하기 def solution(a, b): answer = 0 for x,y in zip(a,b): answer+=x*y return answer 2. 자바스크립트 풀이 function solution(a, b) { return a.reduce((acc,cur,idx)=>{ return acc+cur*b[idx]; },0) }

[프로그래머스] 두 개 뽑아서 더하기 (python, javascript)

1. 파이썬 풀이 중복없이 저장하기 위해 dictionary를 썼다 def solution(numbers): dict={} for i,n in enumerate(numbers): for j,m in enumerate(numbers): if i==j: continue dict[n+m]=n+m return sorted(dict.values()) sorted는 새로운 배열을 반환한다 2. javascript 풀이 function solution(numbers) { var answer = []; for(let i=0;i

[Javascript Concept] typeof null===object 에 대한 고찰

javascript의 원시 타입이 뭐뭐 있었지? 하고 생각하다가 null을 보고 문득 생각이 들었다 null은 원시타입에 속하는데 왜 typeof null은 object이지? 만약 javscript의 타입을 모르는 사람이 있다면 javscript의 원시타입은 number, string, null, undefined, symbol, boolean 등이 있고 참조 타입에는 object, function, array 등이 있다. 두 타입의 차이점은 예전에 정리한 글이 있다(타입 별로 정리한 줄 알았더니 복사 얘기로 썼었네.. 한참 찾았다) 2020/10/27 - [자바스크립트_개념편] - [javascript] 얕은 복사 (참조 복사), 깊은 복사(값 복사) 찾아보니 typeof null의 결과가 object..

2020. 12. 4. 00:53

이벤트 루프 (Event Loop)

자바스크립트는 단일 스레드 언어이다. 단일 스레드는 동시에 하나의 작업만 처리할 수 있다. 하지만 실제 자바스크립트는 여러 개의 HTTP 요청을 날리기도 하고, 마우스 클릭과 같은 이벤트, 애니메이션 효과 등 여러 개의 작업을 동시에 한다. 이렇게 동시성과 비동기를 처리할 수 있는 이유는 브라우저나 Node.js 처럼 자바스크립트 엔진을 구동하는 환경 덕분이다. ECMAScript에는 이벤트 루프에 대한 내용이 없다 (참고: meetup.toast.com/posts/89) V8 과 같은 자바스크립트 엔진은 단일 호출 스택 (콜스택)을 사용하며 해당 요청을 순차적으로 스택에 넣어 처리한다. 아래 그림에서 js안에 콜스택이라고 써진 부분이다. 일반 함수 처리는 여기서 처리한다. 출처: https://blog..

[Leetcode] two sum (python, javascript)

합한 수가 target이면 현재 수 x와 target-x의 위치를 찾으면 된다 각 숫자의 위치를 저장해가면서 이미 지나간 위치에서 target-x가 있다면 [현재위치, dict[target-x]] 를 리턴하면 된다. 1. python class Solution: def twoSum(self, nums: List[int], target: int) -> List[int]: dict={} for i,x in enumerate(nums): if target-x in dict: return [dict[target-x],i] dict[x]=i 2. javascript /** * @param {number[]} nums * @param {number} target * @return {number[]} */ var t..

[JS] 스코프 Scope

스코프는 변수에 접근할 수 있는 범위 이다. 자바스크립트는 기본적으로 ES5까지는 함수 단위 스코프를 지원했고 ES6에 와서 블록 단위 스코프를 지원한다. var가 함수 단위의 스코프를 지원하고 let, const가 블록 단위 스코프를 지원한다. var, 함수 단위 스코프 if 나 for 문 같은 블록의 변수는 공유되나 함수 스코프 내의 변수는 공유하지 않는다. var a=1; // 전역 스코프 // if, for와 같은 블록은 같은 스코프라고 인식해서 블록을 지나도 해당 변수에 // 접근할 수 있다. if(true){ var a=2; } // 함수 내에서 선언된 변수는 함수 스코프를 지원하므로 함수 밖에서는 해당 변수에 // 접근할 수 없다. function test(){ var b=3; console..

[JS] Hoisting 호이스팅

아직 선언하지 않은 변수를 호출하더라도 undefined가 출력된다면? 이것이 바로 호이스팅 console.log(a); // undefined; console.log(test);//undefined; console.log(test2); // function test2 () {...} 저 밑에 선언한 함수가 출력된다 오잉 var a='호이스팅'; // 호이스팅 되는 var 변수 //함수 표현식은 호이스팅 되지 않지 하지만 var test 변수는 호이스팅 된다. var test=function(){ console.log('test'); } //호이스팅이 되는 함수 선언문..!! function test2(){ console.log('test2'); } 분명 변수를 선언하기 전에 호출 먼저 했는데도 에러가 ..

[LeetCode] 15. 3sum (python, javascript, two pointer)

제일 왼쪽은 고정해놓고 그 오른쪽만 투포인터로 계산한다. O(n^2) 정렬해놓고 합이 작으면 더 큰 곳으로 이동하고 크면 오른쪽 포인터를 왼쪽으로 이동시킨다 같은 원소가 있는 부분은 넘어가면서 구한다 1. python class Solution: def threeSum(self, nums: List[int]) -> List[List[int]]: nums.sort() res=[] for i in range(len(nums)-2): if i>0 and nums[i]==nums[i-1]: continue # 중복인 경우 넘어간다 left,right=i+1,len(nums)-1 while left

[LeetCode] 42. trapping rain water (python, javascript, two pointer)

각 왼쪽, 오른쪽 끝에서 시작한다. 왼쪽의 벽이 더 높으면 오른쪽에서 안쪽으로 이동하고 (더 큰 벽을 찾아서) 오른쪽 벽이 더 높다면 왼쪽에서 안쪽으로 이동한다. 만약 현재 왼쪽에서 안쪽으로 이동하는데 지금까지 왼쪽에서 만난 벽 중 가장 높은 위치 lh 보다 작은 곳이라면 물이 고이므로 lh-height[l] 이런 식으로 더해준다. 1. python class Solution: def trap(self, height: List[int]) -> int: if not height: return 0 left,right=0,len(height)-1 l_max,r_max=height[left],height[right] amount=0 while left