분류 전체보기 142

[Javascript] 이벤트 버블링과 캡처링

이벤트 버블링(Event Bubbling) 한 요소에 이벤트가 발생하면, 이 요소에 할당된 핸들러가 동작하고, 이어서 부모 요소의 핸들러가 동작한다. 가장 최상단의 조상 요소를 만날 때까지 이 과정이 반복되면서 요소 각각에 할당된 핸들러가 동작한다. 이벤트 버블링은 한 요소에서 이벤트가 발생했을 때 해당 이벤트가 이 요소의 상위 요소로 전달되어가는 특성을 말한다. FORM DIV P 위 예제에서 가장 안쪽의 P를 누르게 되면 다음과 같이 작동한다. 에 할당된 onclick 핸들러가 동작( alert('p') ) 바깥의 에 할당된 핸들러가 동작( alert('div') ) 그 바깥의 에 할당된 핸들러가 동작( alert('form') ) document 객체를 만날 때까지, 각 요소에 할당된 onclick..

JavaScript 2021.10.11

[Javascript] DOM 노드

DOM 노드는 종류에 따라 대응하는 내장 클래스가 다르다. DOM 노드는 종류에 따라 각각 다른 프로퍼티를 지원한다. 텍스트 노드는 텍스트 프로퍼티를, 주석 노드는 주석 프로퍼티를 제공한다. 그렇다면 기존에 button에서 addEvnetListner가 어떻게 가능했을까? 이는 각 노드들이 상속 구조를 갖기 때문이다. 모든 DOM 노드는 공통 조상으로부터 만들어지기 때문에 노드 종류는 다르지만, 모든 DOM 노드는 공통된 프로퍼티와 메서드를 지원한다. 각 클래스는 다음과 같은 특징을 가진다. EventTarget: 이벤트 관련 기능을 제공하는 클래스. 루트에 있는 ‘추상(abstract)’ 클래스로, 이 클래스에 대응하는 객체는 실제로 만들어지지 않는다. EventTarget가 모든 DOM 노드의 베이스..

JavaScript 2021.10.11

[프로그래머스] 오픈채팅방 (level2, js)

문제 카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김크루는 카카오톡 오픈 채팅방을 개설한 사람을 위해, 다양한 사람들이 들어오고, 나가는 것을 지켜볼 수 있는 관리자창을 만들기로 했다. 채팅방에 누군가 들어오면 다음 메시지가 출력된다. "[닉네임]님이 들어왔습니다." 채팅방에서 누군가 나가면 다음 메시지가 출력된다. "[닉네임]님이 나갔습니다." 채팅방에서 닉네임을 변경하는 방법은 다음과 같이 두 가지이다. 채팅방을 나간 후, 새로운 닉네임으로 다시 들어간다. 채팅방에서 닉네임을 변경한다. 닉네임을 변경할 때는 기존에 채팅방에 출력되어 있던 메시지의 닉네임도 전부 변경된다. 예를 들어, 채팅방에 "..

[백준] 14003번: 가장 긴 증가하는 부분 수열 5 (c++)

문제 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이고, 길이는 4이다. 첫째 줄에 수열 A의 가장 긴 증가하는 부분 수열의 길이를 출력한다. 둘째 줄에는 정답이 될 수 있는 가장 긴 증가하는 부분 수열을 출력한다. 14003번: 가장 긴 증가하는 부분 수열 5 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (-1,000,000,000 ≤ Ai ≤ 1,000,000,000) www.acmicpc.net 문제조건 N (1..

알고리즘/BOJ 2021.10.07

[백준] 12738번: 가장 긴 증가하는 부분 수열 3 (c++)

문제 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이고, 길이는 4이다. 첫째 줄에 수열 A의 가장 긴 증가하는 부분 수열의 길이를 출력한다. 12738번: 가장 긴 증가하는 부분 수열 3 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (-1,000,000,000 ≤ Ai ≤ 1,000,000,000) www.acmicpc.net 문제조건 N (1 ≤ N ≤ 1,000,000) -1,000,000,000 ≤ Ai ≤ 1..

알고리즘/BOJ 2021.10.07

[백준] 2623번: 음악프로그램 (c++)

문제 인터넷 방송 KOI(Korea Open Internet)의 음악 프로그램 PD인 남일이는 자기가 맡은 프로그램 '뮤직 KOI'에서 가수의 출연 순서를 정하는 일을 매우 골치 아파한다. 순서를 정하기 위해서는 많은 조건을 따져야 한다. 그래서 오늘 출연 예정인 여섯 팀의 가수에 대해서 남일이가 보조 PD 세 명에게 각자 담당한 가수의 출연 순서를 정해오게 하였다. 보조 PD들이 가져온 것은 아래와 같다. 1 4 3 6 2 5 4 2 3 첫 번째 보조 PD는 1번 가수가 먼저, 다음에 4번 가수, 다음에 3번 가수가 출연하기로 순서를 정했다. 두 번째 보조 PD는 6번, 2번, 5번, 4번 순으로 자기 담당 가수들의 순서를 정했다. 한 가수를 여러 보조 PD가 담당할 수도 있다. 마지막으로, 세 번째 ..

알고리즘/BOJ 2021.10.06

[프로그래머스] 키패드 누르기 (level1, js)

문제 스마트폰 전화 키패드의 각 칸에 다음과 같이 숫자들이 적혀 있습니다. 이 전화 키패드에서 왼손과 오른손의 엄지손가락만을 이용해서 숫자만을 입력하려고 합니다. 맨 처음 왼손 엄지손가락은 * 키패드에 오른손 엄지손가락은 # 키패드 위치에서 시작하며, 엄지손가락을 사용하는 규칙은 다음과 같습니다. 엄지손가락은 상하좌우 4가지 방향으로만 이동할 수 있으며 키패드 이동 한 칸은 거리로 1에 해당합니다. 왼쪽 열의 3개의 숫자 1, 4, 7을 입력할 때는 왼손 엄지손가락을 사용합니다. 오른쪽 열의 3개의 숫자 3, 6, 9를 입력할 때는 오른손 엄지손가락을 사용합니다. 가운데 열의 4개의 숫자 2, 5, 8, 0을 입력할 때는 두 엄지손가락의 현재 키패드의 위치에서 더 가까운 엄지손가락을 사용합니다. 4-1...

[error] VSCode 오류(이 시스템에서 스크립트를 실행할 수 없으므로 ~ps1 파일을 로드할 수 없음)

nodemon : 이 시스템에서 스크립트를 실행할 수 없으므로 C:\Users\sunho\AppData\Roaming\npm\nodemon.ps1 파일을 로드할 수 없습니다. 자세한 내용은 about_Execution_Policies(https://go.microsoft.com/fwlink/?LinkID=135170)를 참조하십시오. 위치 줄:1 문자:1 + nodemon app.js + ~~~~~~~ + CategoryInfo : 보안 오류: (:) [], PSSecurityException + FullyQualifiedErrorId : UnauthorizedAccess nodemon을 사용하려 했더니 다음과 같은 error가 발생하였다. 에러를 읽어보면 스크립트 실행 권한이 제한되어 있어 발생하는 문..

etc/error 2021.10.04

[백준] 7579번: 앱 (c++)

문제 현재 N개의 앱, \(A_1\), ..., \(A_N\)이 활성화 되어 있다고 가정하자. 이들 앱 \(A_i\)는 각각 \(m_i\) 바이트만큼의 메모리를 사용하고 있다. 또한, 앱 \(A_i\)를 비활성화한 후에 다시 실행하고자 할 경우, 추가적으로 들어가는 비용(시간 등)을 수치화 한 것을 \(c_i\) 라고 하자. 이러한 상황에서 사용자가 새로운 앱 B를 실행하고자 하여, 추가로 M 바이트의 메모리가 필요하다고 하자. 즉, 현재 활성화 되어 있는 앱 \(A_1\), ..., \(A_N\) 중에서 몇 개를 비활성화 하여 M 바이트 이상의 메모리를 추가로 확보해야 하는 것이다. 여러분은 그 중에서 비활성화 했을 경우의 비용 \(c_i\)의 합을 최소화하여 필요한 메모리 M 바이트를 확보하는 방법을..

알고리즘/BOJ 2021.09.30

[Node.js] node.js 동작 방식: thread & thread pool

node.js 서버는 프로세스 안에 있는 하나의 단일 스레드(single thread)에서 실행된다. node.js 서버를 실행시키면 콜백 함수 안에 있지 않은 모든 코드인 top-level 코드들이 실행된다. 그 다음 서버 어플리케이션이 필요로 하는 모든 모듈들이 require되고 모든 콜백 이벤트가 등록된다. 마지막으로 이벤트루프가 실행된다. node.js는 이벤트 기반임으로 어플리케이션의 대부분의 일이 이벤트루프에서 처리된다. 어떤 작업들은 이벤트루프가 처리하기에 무겁다(heavy, expensive). 예를 들어 파일 처리 파일 압축, 비밀번호 hashing, DNS lookup 등이 있다. 만약 이러한 작업들이 이벤트루프에서 처리되면 스레드가 block 되어 시간이 많이 소요될 수 있다. 이렇게..

Node.js 2021.09.29
반응형