분류 전체보기(196)
-
실행 컨텍스트와 렉시컬 환경 심화 탐구
실행 컨텍스트는 소스코드를 실행하는 데 필요한 환경을 제공하고 코드의 실행 결과를 관리하는 영역이다. 그렇다면 어떤 환경을 제공하고, 어떻게 실행 결과를 관리할까? 우선 소스 코드는 평가와 실행의 과정을 거친다. 코드를 실행하기 이전에 어떤 변수가 있는지, 어떤 함수가 존재하는지 등 평가의 과정을 거친 후에 그 정보들로 실행 컨텍스트를 구성하고, 런타임에 코드가 실행된다. const x = 1; function foo() { const y = 2; function bar() { const z = 3; console.log(x + y + z); } bar(); } foo(); 실행 컨텍스트가 생성되고 콜 스택에 의해 관리되면서 코드의 제어권이 바뀌는 과정에 대해서는 생략한다. 복습할 때 스스로 다시 한 번..
2024.02.09 -
결정 알고리즘(이진탐색) - K번째 수
문제 (백준 1300) 세준이는 크기가 N×N인 배열 A를 만들었다. 배열에 들어있는 수 A[i][j] = i×j 이다. 이 수를 일차원 배열 B에 넣으면 B의 크기는 N×N이 된다. B를 오름차순 정렬했을 때, B[k]를 구해보자. 배열 A와 B의 인덱스는 1부터 시작한다. 입력 첫째 줄에 배열의 크기 N이 주어진다. N은 105보다 작거나 같은 자연수이다. 둘째 줄에 k가 주어진다. k는 min(109, N2)보다 작거나 같은 자연수이다. 출력 B[k]를 출력한다. 예제 입력 1 3 7 예제 출력 1 6 📝풀이과정 이차원 배열을 만들어서 flat으로 일차원 배열을 만든 후 오름차순 정렬을 하여 값을 구하면 당연히 메모리 초과가 나온다. 골드 1 문제가 이렇게 간단하게 풀리진 않을 것이다. O(N^2)..
2024.02.08 -
결정 알고리즘(이분탐색) - 공유기 설치
흔히 parametric search라고도 부르는, 이분 탐색을 응용하여 최솟값이나 최댓값을 찾는 테크닉을 배우는 문제이다. 이전 문제인 뮤직 비디오의 심화버전이라고 생각하면 된다. 이분 탐색을 사용하여 가장 최적의 답을 구하는 방법은 같지만 최적의 조건을 찾는 과정이 조금 더 까다롭게 제출된 거 같다. 문제 (백준 2110) 도현이의 집 N개가 수직선 위에 있다. 각각의 집의 좌표는 x1, ..., xN이고, 집 여러개가 같은 좌표를 가지는 일은 없다. 도현이는 언제 어디서나 와이파이를 즐기기 위해서 집에 공유기 C개를 설치하려고 한다. 최대한 많은 곳에서 와이파이를 사용하려고 하기 때문에, 한 집에는 공유기를 하나만 설치할 수 있고, 가장 인접한 두 공유기 사이의 거리를 가능한 크게 하여 설치하려고 ..
2024.02.08 -
이분탐색 - 숫자카드 2
백준 10816 문제 숫자 카드는 정수 하나가 적혀져 있는 카드이다. 상근이는 숫자 카드 N개를 가지고 있다. 정수 M개가 주어졌을 때, 이 수가 적혀있는 숫자 카드를 상근이가 몇 개 가지고 있는지 구하는 프로그램을 작성하시오. 입력 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10,000,000보다 작거나 같다. 셋째 줄에는 M(1 ≤ M ≤ 500,000)이 주어진다. 넷째 줄에는 상근이가 몇 개 가지고 있는 숫자 카드인지 구해야 할 M개의 정수가 주어지며, 이 수는 공백으로 구분되어져 있다. 이 수도 -10,000,000보다 크거나..
2024.02.07 -
결정 알고리즘(이분검색) - 뮤직비디오
결정 알고리즘은 답을 정하고 이 답이 유효한지 확인하면서 더 좋은 답을 찾아가는 방식을 의미한다. 주로 이분 검색을 사용한다. 📝풀이과정 먼저 문제에 대한 정확한 이해가 필요하다. 이 문제는 더더욱 그렇다. 문제에 대한 이해가 부족하면 알고리즘을 적용하는 데 왜 이렇게 적용하는지 어려움을 겪는다. 먼저 곡의 길이가 분 단위로 다음과 같이 주어진다. 1 2 3 4 5 6 7 8 9 그리고 M개의 DVD 갯수가 주어진다. 3 DVD의 최소 용량의 크기를 구해야한다. 만일 용량의 크기가 30이라고 해보자. 담을 수 있는 최대 크기가 30이므로 다음과 같이 담길 것이다. [ 1 2 3 4 5 6 7 ] [ 8 9 ] 이렇게 총 2개의 DVD를 사용해서 담을 수 있다. 우리는 3개의 DVD에 담아야하므로 용량을 ..
2024.02.07 -
그리디 - 결혼식, 강의실 배정
문제 - 결혼식 현수는 다음 달에 결혼을 합니다. 현수는 결혼식 피로연을 장소를 빌려 3일간 쉬지 않고 하려고 합니다. 피로연에 참석하는 친구들 N명의 참석하는 시간정보를 현수는 친구들에게 미리 요구했습니다. 각 친구들은 자신이 몇 시에 도착해서 몇 시에 떠날 것인지 현수에게 알려주었습니다. 현수는 이 정보를 바탕으로 피로연 장소에 동시에 존재하는 최대 인원수를 구하여 그 인원을 수용할 수 있는 장소를 빌리려고 합니다. 여러분이 현수를 도와주세요. 만약 한 친구가 오는 시간 13, 가는시간 15라면 이 친구는 13시 정각에 피로연 장에 존재하는 것이고 15시 정각에는 존재하지 않는다고 가정합니다. ▣ 입력설명 첫째 줄에 피로연에 참석할 인원수 N(5 { if (a[0] === b[0]) { if (a[1..
2024.02.07