Loading...
2020. 12. 4. 00:53

이벤트 루프 (Event Loop)

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

2020. 12. 3. 02:07

[Javascript] Async와 defer 차이 (스크립트를 파싱하는 방법)

async와 defer의 차이점을 까먹어서 다시 공부해서 정리해야겠다고 생각했는데 마침 유튜브에서 보는 개발자분이 설명한 영상이 있어서 참고했다. 동영상: www.youtube.com/watch?v=tJieVCgGzhs&list=PLv2d7VI9OotTVOL4QmPfvJWPJvkmv6h-2&index=2 여기에 잘 설명된 글이 있어서 해당 글을 참고했다. blog.asamaru.net/2017/05/04/script-async-defer/ 브라우저가 파일을 파싱하는 순서 1. html 파일 파싱 2. css 파일 파싱 3. 중간에 javascript파일 만나면 javascript 파싱 모르는 개념이라면 아래글을 참고 2020/09/17 - [FE면접준비] - 브라우저 렌더링 과정 웹 브라우저는 파일을 파..

[백준 2644번] 촌수계산 (python, dfs)

www.acmicpc.net/problem/2644 2644번: 촌수계산 사람들은 1, 2, 3, …, n (1≤n≤100)의 연속된 번호로 각각 표시된다. 입력 파일의 첫째 줄에는 전체 사람의 수 n이 주어지고, 둘째 줄에는 촌수를 계산해야 하는 서로 다른 두 사람의 번호가 주어진 www.acmicpc.net 리스트 형태로 이어져있는 노드에 대한 정보를 다 놓고 visited 배열을 이용해 방문한 적 없는 노드들과 다 연결시킨다. dfs를 돌려도 다 연결이 안되었다면 서로 이어져있지 않는 관계이다. import sys from collections import defaultdict from collections import deque input=sys.stdin.readline def dfs(a,b):..

[백준 2343번] 기타 레슨 (이분탐색, python, binary search)

www.acmicpc.net/problem/2343 2343번: 기타 레슨 강토는 자신의 기타 레슨 동영상을 블루레이로 만들어 판매하려고 한다. 블루레이에는 총 N개의 레슨이 들어가는데, 블루레이를 녹화할 때, 레슨의 순서가 바뀌면 안 된다. 순서가 뒤바뀌는 경 www.acmicpc.net 이분탐색 자체보다는 각 크기를 잘못 계산하는 바람에 계속 틀렸다 l=min(lesson)으로 해줬었는데 그러면 기준 크기 mid보다 각 음악의 길이가 더 클 때 문제가 된다. 따라서 l=max(lesson)으로 해줘서 최소 한 블루레이 크기에 한 음악은 들어갈 수 있도록 해줘야한다. import sys input=sys.stdin.readline from collections import deque n,m=map(in..

[백준 2206번] 벽 부수고 이동하기 (python, bfs)

www.acmicpc.net/problem/2206 2206번: 벽 부수고 이동하기 N×M의 행렬로 표현되는 맵이 있다. 맵에서 0은 이동할 수 있는 곳을 나타내고, 1은 이동할 수 없는 벽이 있는 곳을 나타낸다. 당신은 (1, 1)에서 (N, M)의 위치까지 이동하려 하는데, 이때 최단 경로 www.acmicpc.net vis 배열을 3차원으로 만들고 세 번째 인자 c가 1이면 뚫은 벽, 아니면 뚫지 않은 벽이다. 벽을 뚫을 필요가 없을 때는 일반적인 bfs를 해주고 이미 한번 뚫은 뒤에는 (c가 1인채로 온 경우에는 현재 위치가 0인 경우에만 지나갈 수 있다) 벽을 뚫을 경우에는 현재 위치가 1(벽)이고 c가 0인 경우이다. import sys input=sys.stdin.readline from c..

[Leetcode] 20. valid parentheses (python, easy)

올바른 괄호 문자열 판별 1. 짝이 맞아야 한다 2. 여는 괄호없이 닫는 괄호가 들어갈 수 없다 3. 모든 괄호가 닫히지 않았다 (여는 괄호가 닫는 괄호보다 더 많음) class Solution: def isValid(self, s: str) -> bool: p={')':'(','}':'{',']':'['} stack=[] for c in s: if c==')' or c=='}' or c==']': if not stack or stack[-1]!=p[c]: return False stack.pop() else: stack.append(c) if stack: return False return True

[백준 1918번 ] 후위 표기식 (stack, python)

www.acmicpc.net/problem/1918 1918번: 후위 표기식 첫째 줄에 중위 표기식이 주어진다. 단 이 수식의 피연산자는 A~Z의 문자로 이루어지며 수식에서 한 번씩만 등장한다. 그리고 -A+B와 같이 -가 가장 앞에 오거나 AB와 같이 *가 생략되는 등의 수식 www.acmicpc.net import sys from math import sqrt input=sys.stdin.readline d={'*':2,'/':2,'+':1,'-':1,'(':0,')':0} q=[] s=input().strip() for x in s: # 알파벳 출력 if x not in d: print(x,end='') #왼쪽 괄호 elif x=='(': q.append(x) # 오른쪽 괄호시 왼쪽 괄호 나올때까지..

[백준 15711번] 환상의 짝꿍 (python, 소수, 에라토스테네스의 체, 골드바흐의 추측)

www.acmicpc.net/problem/15711 15711번: 환상의 짝꿍 환상의 나라 디디랜드에서는 인연의 증표로 끈을 하나씩 가지고 있다. 그들은 지극히 평범한 방법으로 이 끈을 이용하여 어떤 두 사람이 환상의 짝꿍인지 판단하는데, 두 사람의 끈을 서로 이 www.acmicpc.net m.blog.naver.com/PostView.nhn?blogId=rdd573&logNo=221270230610&proxyReferer=https:%2F%2Fwww.google.com%2F 위 글을 참고하여 풀었다. 골드 바흐의 추측은 2보다 큰 모든 짝수는 두 개의 소수의 합으로 표시할 수 있다는 것이다. 따라서 홀수만 ! 체크해 주면 된다 또 a,b의 범위가 워낙 커서 문제가 되는데 에라토스테네스의 체로 소수를..

[백준 11279번 ] 최대 힙 (python, heapq)

www.acmicpc.net/problem/11279 11279번: 최대 힙 첫째 줄에 연산의 개수 N(1≤N≤100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0이 www.acmicpc.net heapq 모듈을 쓰면 heappop할 때 기본 작은 순서대로 반환하는데 -를 붙이면 큰 값이 가장 작아지므로 그렇게 넣은 뒤 반환한 값을 다시 -를 붙여서 되돌린다 import sys from heapq import heappop,heappush input=sys.stdin.readline n=int(input()) q=[] for _ in range(n): x=int(input()) if ..

[백준 문제집 모음] 가장 긴 증가하는 부분수열

순서대로 n의 범위가 달라지고 수열의 길이만 구하는 것에서 실제 수열 요소를 구하는 순으로 어려워진다. 2번 문제는 1과 범위만 다르므로 dp로 풀 수 없고 이진탐색, bisect(python)으로 풀어야한다 2020/11/23 - [백준] - [11053번] 가장 긴 증가하는 부분 수열 (python, bisect) 2020/11/23 - [백준] - [백준 12738번] 가장 긴 증가하는 부분 수열 3 (python, bisect) 2020/11/24 - [백준] - [백준 14002번] 가장 긴 증가하는 부분 수열 4 (python, bisect, 어려움) 2020/11/25 - [백준] - [백준 14003번] 가장 긴 증가하는 부분 수열 5 (bisect, python)