전체 글 481

[JS] 실행 컨텍스트

자바스크립트 엔진은 소스코드를 어떻게 실행할까? 소스코드가 정상적으로 실행되기 위해서는 신경써줘야 할 것들이 많다. 선언한 변수를 찾을 수 있어야하고 함수가 실행되고 종료되었을 때 함수가 호출된 시점으로 돌아갈 수도 있어야한다. 자바스크립트 엔진은 실행 컨텍스트를 통해 소스코드가 실행하는 데 필요한 환경을 만들어주고 관리한다. 자바스크립트 엔진은 소스코드를 평가하고 실행한다. 자바스크립트 엔진은 소스코드를 평가하고 실행하는 2개의 과정을 거치게된다. 평가 과정에서는 선언문으로 작성한 변수와 함수에 대한 식별자를 실행 컨텍스트가 관리하는 스코프에 등록한다. 이어서 소스코드를 순차적으로 실행하게 된다. 실행 과정에서는 평가 과정에서 변수와 함수의 식별자를 등록한 스코프에서 필요한 것을 검색한다. 또한 자바스..

[네트워크] HTTP

프로토콜은 어떻게 메시지를 주고받을지 규칙을 정해놓은 것이다. WEB 상에서 클라이언트와 서버는 HTTP를 통해 메시지를 주고받는다. 클라이언트는 HTTP를 통해 "무엇을", "어떻게" 등의 정보를 서버에 전달하고 서버는 HTTP를 통해 응답에 대한 결과를 전달한다. HTTP의 탄생 유럽 입자 물리학 연구소의 팀 버너스 리 박사는 World Wide Web을 개발하였고 WWW를 구성하는 기술인 HTML, HTTP, URL 등을 고안해냈다. HTML의 경우 웹 상에서 주고받는 문서를 작성할 수 있는 마크업 언어이며 HTTP는 이러한 문서를 전송하기 위한 프로토콜, URL은 문서의 주소를 정하는 방법이다. HTTP의 기본 동작 클라이언트(브라우저)가 서버에 요청을 할 때는 "무엇을", "어떻게"와 부가적인 ..

CS/네트워크 2021.07.07

[백준 2343] 기타 레슨

문제 강토는 자신의 기타 레슨 동영상을 블루레이로 만들어 판매하려고 한다. 블루레이에는 총 N개의 레슨이 들어가는데, 블루레이를 녹화할 때, 레슨의 순서가 바뀌면 안 된다. 순서가 뒤바뀌는 경우에는 레슨의 흐름이 끊겨, 학생들이 대혼란에 빠질 수 있기 때문이다. 즉, i번 레슨과 j번 레슨을 같은 블루레이에 녹화하려면 i와 j 사이의 모든 레슨도 같은 블루레이에 녹화해야 한다. 강토는 이 블루레이가 얼마나 팔릴지 아직 알 수 없기 때문에, 블루레이의 개수를 가급적 줄이려고 한다. 오랜 고민 끝에 강토는 M개의 블루레이에 모든 기타 레슨 동영상을 녹화하기로 했다. 이때, 블루레이의 크기(녹화 가능한 길이)를 최소로 하려고 한다. 단, M개의 블루레이는 모두 같은 크기이어야 한다. 강토의 각 레슨의 길이가 ..

[백준 2613] 숫자구슬

문제 N개의 숫자 구슬이 과 같이 막대에 꿰어져 일자로 놓여 있다. 이들 구슬은 막대에서 빼낼 수 없고, 바꿀 수 없다. 이 숫자 구슬을 M개의 그룹으로 나누었을 때 각각의 그룹의 합 중 최댓값이 최소가 되도록 하려 하다. 예를 들어 세 그룹으로 나눈다고 할 때 와 같이 그룹을 나누면 그룹의 합은 각각 11, 15, 18이 되어 그 중 최댓값은 18이 되고, 과 같이 나누면 각 그룹의 합은 각각 17, 12, 15가 되어 그 중 최댓값은 17이 된다. 숫자 구슬의 배열이 위와 같을 때는 그룹의 합 중 최댓값이 17보다 작게 만들 수는 없다. 그룹에 포함된 숫자 구슬의 개수는 0보다 커야 한다. 각 그룹의 합 중 최댓값이 최소가 되도록 M개의 그룹으로 나누었을 때, 그 최댓값과 각 그룹을 구성하는 구슬의 ..

[JS] 호이스팅이 발생하는 이유

호이스팅으로 인해 변수에 값을 할당하기 전에 참조할 수 있다. 참조 후에 변수를 선언하더라도 코드가 실행되면 변수를 맨 위로 끌어올린 후에 실행되기 때문에 이러한 현상이 발생한다. 즉 아래와 같은 코드를 호이스팅이 발생한 코드라고 할 수 있다. var로 선언한 변수 x에 도달하기 전에 참조하여 출력할 수 있다. 이때 x에는 undefined가 저장되어있을 것이다. console.log(x); // undefined가 출력된다. var x = 5; 호이스팅이이 무엇인지는 알 수 있다. 하지만 호이스팅이 왜 발생하는지 알아볼 필요가 있다. 자바스크립트가 코드를 실행하는 방법 먼저 자바스크립트가 코드를 어떻게 실행하는지 이해할 필요가 있다. 자바스크립트 엔진은 소스코드를 평가하고 실행하는 2가지의 과정으로 진..

[백준 2792] 보석 상자

문제 보석 공장에서 보석 상자를 유치원에 기증했다. 각각의 보석은 M가지 서로 다른 색상 중 한 색상이다. 원장 선생님은 모든 보석을 N명의 학생들에게 나누어 주려고 한다. 이때, 보석을 받지 못하는 학생이 있어도 된다. 하지만, 학생은 항상 같은 색상의 보석만 가져간다. 한 아이가 너무 많은 보석을 가져가게 되면, 다른 아이들이 질투를 한다. 원장 선생님은 이런 질투심을 수치화하는데 성공했는데, 질투심은 가장 많은 보석을 가져간 학생이 가지고 있는 보석의 개수이다. 원장 선생님은 질투심이 최소가 되게 보석을 나누어 주려고 한다. 상자에 빨간 보석이 4개 (RRRR), 파란 보석이 7개 (BBBBBBB) 있었고, 이 보석을 5명의 아이들에게 나누어 주는 경우를 생각해보자. RR, RR, BB, BB, B..

[백준 3079] 입국심사

문제 상근이와 친구들은 오스트레일리아로 여행을 떠났다. 상근이와 친구들은 총 M명이고, 지금 공항에서 한 줄로 서서 입국심사를 기다리고 있다. 입국심사대는 총 N개가 있다. 각 입국심사관이 심사를 하는데 걸리는 시간은 사람마다 모두 다르다. k번 심사대에 앉아있는 심사관이 한 명을 심사를 하는데 드는 시간은 Tk이다. 가장 처음에 모든 심사대는 비어있고, 심사를 할 준비를 모두 끝냈다. 상근이와 친구들은 비행기 하나를 전세내고 놀러갔기 때문에, 지금 심사를 기다리고 있는 사람은 모두 상근이와 친구들이다. 한 심사대에서는 한 번에 한 사람만 심사를 할 수 있다. 가장 앞에 서 있는 사람은 비어있는 심사대가 보이면 거기로 가서 심사를 받을 수 있다. 하지만 항상 이동을 해야 하는 것은 아니다. 더 빠른 심사..

[백준 1365] 꼬인 전깃줄

문제 공화국에 있는 유스타운 시에서는 길을 사이에 두고 전봇대가 아래와 같이 두 줄로 늘어서 있다. 그리고 길 왼편과 길 오른편의 전봇대는 하나의 전선으로 연결되어 있다. 어떤 전봇대도 두 개 이상의 다른 전봇대와 연결되어 있지는 않다. 문제는 이 두 전봇대 사이에 있는 전깃줄이 매우 꼬여 있다는 점이다. 꼬여있는 전깃줄은 화재를 유발할 가능성이 있기 때문에 유스타운 시의 시장 임한수는 전격적으로 이 문제를 해결하기로 했다. 임한수는 꼬여 있는 전깃줄 중 몇 개를 적절히 잘라 내어 이 문제를 해결하기로 했다. 하지만 이미 설치해 놓은 전선이 아깝기 때문에 잘라내는 전선을 최소로 하여 꼬여 있는 전선이 하나도 없게 만들려고 한다. 유스타운 시의 시장 임한수를 도와 잘라내야 할 전선의 최소 개수를 구하는 프..

[백준 2352] 반도체 설계

문제 반도체를 설계할 때 n개의 포트를 다른 n개의 포트와 연결해야 할 때가 있다. 예를 들어 왼쪽 그림이 n개의 포트와 다른 n개의 포트를 어떻게 연결해야 하는지를 나타낸다. 하지만 이와 같이 연결을 할 경우에는 연결선이 서로 꼬이기 때문에 이와 같이 연결할 수 없다. n개의 포트가 다른 n개의 포트와 어떻게 연결되어야 하는지가 주어졌을 때, 연결선이 서로 꼬이지(겹치지, 교차하지) 않도록 하면서 최대 몇 개까지 연결할 수 있는지를 알아내는 프로그램을 작성하시오 입력 첫째 줄에 정수 n(1 ≤ n ≤ 40,000)이 주어진다. 다음 줄에는 차례로 1번 포트와 연결되어야 하는 포트 번호, 2번 포트와 연결되어야 하는 포트 번호, …, n번 포트와 연결되어야 하는 포트 번호가 주어진다. 이 수들은 1 이상..

[백준 12738] 가장 긴 증가하는 부분 수열3

문제 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이고, 길이는 4이다. 입력 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (-1,000,000,000 ≤ Ai ≤ 1,000,000,000) 출력 첫째 줄에 수열 A의 가장 긴 증가하는 부분 수열의 길이를 출력한다. 접근 이진탐색으로 LIS를 구현하였다. 두 개의 과정으로 나눌 수 있다. 1. LIS 배열을 채워나가는 과정 2. 이진탐색을 통해 대입할 자리 찾기 LIS..

728x90
반응형