본문 바로가기

모두보기

[코딩인터뷰] 2020 카카오 신입 공채 - 자물쇠와 열쇠 import sys readline = sys.stdin.readline def rotate(key): return list(list(x)[::-1] for x in zip(*key)) def check(N, M, board): for x in range(M-1, M+N-1): for y in range(M-1, M+N-1): if board[x][y] != 1: return False return True def solution(key, lock): M = len(key) N = len(lock) board = [[0] * ((M-1)+N+(M-1)) for _ in range((M-1)+N+(M-1))] for i in range(N): for j in range(N): board[M-1+i][M-1..
[FE] JavaScript 완벽 가이드, ECMAScript 를 읽는 방법 (2/2) JavaScript 완벽 가이드, ECMAScript 을 읽는 방법 저번 글 에서는 ECMAScript 를 읽기 위해 알아야 할 개념들을 소개했고, 이번 글에서는 ECMAScript 문서에서 자바스크립트 동작 원리를 파악하는 과정을 소개하도록 하겠습니다. const o1 = { foo: 99 }; const o2 = {}; Object.setPrototypeOf(o2, o1); o2.foo; // → 99 위 코드를 보면 Object.setPrototypeOf(o2, o1) 을 호출해서 o2 의 프로토타입을 o1 으로 설정했습니다. o2 의 프로토타입이 o1 이 되었기 때문에 o2 에 foo 라는 속성이 없어도 o2.foo 는 o1.foo 에 접근하여 값을 얻어 마지막 코드 o2.foo 의 결과가 o1...
[FE] JavaScript 완벽 가이드, ECMAScript 를 읽는 방법 (1/2) JavaScript 완벽 가이드, ECMAScript 을 읽는 방법 ECMAScript 는 완벽한 자바스크립트 가이드입니다. ECMAScript 가 자바스크립트 언어를 정의한 문서이며 표준이기 때문입니다. 모든 자바스크립트 엔진은 표준인 ECMAScript 에서 요구하는 사항은 반드시 구현해야 합니다. ECMAScript 를 읽고 싶어도 위 그림과 같이 특유의 단어와 문법으로 적혀 있어서 단순하게 읽을 수가 없습니다. 그래서 혹시 잘 정리한 문서가 있나 찾아봤지만 ECMAScript 에 추가된 새로운 기능을 소개하는 글만 있을 뿐, ECMAScript 를 구체적으로 설명하는 글을 찾을 수는 없었습니다. 그래서 제가 ECMAScript 을 읽다보니, 미리 알았으면 읽기 수월했을 개념들을 정리해서 글로 작성..
[FE] 브라우저 렌더링 Browser rendering - 5단계 변경 'change' 브라우저 렌더링 Browser rendering 브라우저는 'content (콘텐츠)' 를 'rendering (렌더링)' 해서 'pixel image(픽셀 이미지)' 즉 화면을 만듭니다. 브라우저 렌더링 Browser rendering - 0단계 소개 브라우저 렌더링 Browser rendering - 1단계 파싱 'parse' 브라우저 렌더링 Browser rendering - 2단계 스타일링 'style' 브라우저 렌더링 Browser rendering - 3단계 레이아웃 'layout' 브라우저 렌더링 Browser rendering - 4단계 페인팅 'paint' 브라우저 렌더링 Browser r..
[FE] 브라우저 렌더링 Browser rendering - 4단계 페인팅 'paint' 브라우저 렌더링 Browser rendering 브라우저는 'content (콘텐츠)' 를 'rendering (렌더링)' 해서 'pixel image(픽셀 이미지)' 즉 화면을 만듭니다. 브라우저 렌더링 Browser rendering - 0단계 소개 브라우저 렌더링 Browser rendering - 1단계 파싱 'parse' 브라우저 렌더링 Browser rendering - 2단계 스타일링 'style' 브라우저 렌더링 Browser rendering - 3단계 레이아웃 'layout' 브라우저 렌더링 Browser rendering - 4단계 페인팅 'paint' 브라우저 렌더링 Browser r..
[코딩인터뷰] 백준 2110번 공유기 설치 너무 정확하게 문제를 풀려는 습관때문에 쉽게 풀 것도 어렵게 접근하게 되는 나쁜 버릇... import sys rl = sys.stdin.readline N, C = map(int, rl().split()) H = [] for _ in range(N): H.append(int(rl())) H.sort() answer = 0 # 가능한 최소 거리 lo = 1 # 가능한 최대 거리 hi = H[-1] - H[0] while lo = mid: pr = H[i] c += 1 # 설치해야 하는 공유기 수보다 적게 설치했다면, 최대 거리를 좁힌다. if c < C: hi = mid - 1 # 설치해야 하는 공유기 수보다 많이 설치했다면, 최대 거리를 늘린다. else: lo = mid + 1 # 지금 최대 거리를 ..
[코딩인터뷰] 백준 10986번 나머지 합 수학적인 추론을 이끌어 내야 풀 수 있는 문제입니다. 'A(i) ~ A(j) = S(j) - S(i-1)' 가 Prefix Sum 의 기본 공식이고 나머지가 0 이어야 한다는 점에 착안해서 새로운 공식을 도출해야 합니다. 'A(1) ~ A(i) = K (K = 정수)' 이고 'A(1) ~ A(j) = K' 라면, 'A(i) ~ A(j) = 0' 이어야 합니다. 왜냐하면 i 부터 j 까지 합으로 인한 변화가 없어야 같은 K 가 나올 수 있기 때문입니다. 그리고 'A(i) ~ A(j) = 0' 이라면 양변에 나머지 연산을 해도 동일해서 '(A(i) ~ A(j)) % M = 0' 입니다. 이점에 착안해서 Prefix Sum ..
[코딩인터뷰] 백준 13398번 연속합 2 import sys readline = sys.stdin.readline read = sys.stdin.read N = int(readline()) A = list(map(int, readline().split())) A.insert(0,0) answer = -(10**10) d = [[answer] * (N+1) for _ in range(2)] for k in range(1, N+1): # 일반적인 누적합을 계산하는 부분 # 'd[0][k-1] + A[k]' 는 이전 누적합 중 최대값과 현재 값을 더했을 경우 d[0][k] = max(d[0][k-1] + A[k], A[k]) # 'd[0][k-1]' 는 지금 A[k] 를 누적합 계산에서 제외할 경우 # 'd[1][..