div1 div2 div3 여기 div의 영역을 클릭하면 div의 이름이 담긴 alert 창이 나오는 이벤트 핸들러가 있다고 생각해보자. div1, div2, div3에 각각 동일한 핸들러를 바인딩했고, 사용자가 div3의 영역을 눌렀을 때 alert창에는 어떤 순서로 div 이름이 출력될까? 캡쳐링과 버블링은 쉽게 말해서 어떤 한 태그에서 이벤트가 발생하였을 때 자신을 포함한 부모 태그들까지 쭉 훑으며 겹치는 이벤트의 핸들러가 있는지 없는지 검사하는 것을 의미한다. 먼저 캡쳐링은 이벤트가 발생한 요소를 포함하는 부모 태그에서부터 이벤트 근원지인 자식 태그까지 검사하는 것을 의미한다. 그 과정에서 이벤트 캡쳐링 속성의 이벤트 핸들러가 있다면 핸들러를 수행한다. 버블링은 이벤트 발생 요소부터 요소를 포함하..
Javascript 1. 인라인 이벤트 핸들러 (HTML에서 등록) 클릭 클릭 2. 이벤트 핸들러 프로퍼티 (Javascript에서 등록) document.getElementById("div1").onclick = function() { alert('안녕하세요'); } 단, 하나의 프로퍼티에 하나의 핸들러만 바인딩 할 수 있다는 단점이 있다. (인라인 이벤트 핸들러 방식은 여러 함수를 호출할 수 있다.) 3. addEventListener 메소드 // IE 9 이전 버전 document.getElementById("div1").attachEvent("click", openAlert); // IE 9 이후 버전 document.getElementById("div1").addEventListener("cli..
CSS 선택자 활용 일반 선택자 선택자명 선택 범위 표현식 전체 선택자 HTML 문서 내 모든 element * {} 타입 선택자 매칭되는 element 선택 h1, h2, h3 {} 클래스 선택자 class 속성 값과 매칭되는 element 선택 .className {} ID 선택자 id 속성 값과 매칭되는 element 선택 #idName {} 복합 선택자 선택자명 선택 범위 표현식 하위 선택자 하위 element 선택 (얼마의 깊이가 차이나든 하위에 있다면 모두 선택) E1 E2 {} 자식 선택자 직속 하위 element 선택 (바로 내 밑의 깊이에서만 선택) E1 > E2 {} 인접 형제 선택자 인접 형제 관계인 element 선택 (바로 내 뒤의 형제만 선택) E1 + E2 {} 일반 형제 선택..
보통 블로킹&동기, 논블로킹&비동기가 쌍이다. 사실 블로킹과 동기, 논블로킹과 비동기는 비슷한 소리를 하고 있다. 단지 관점이 다르다. 블로킹/논블로킹은 제어권에 대해, 동기/비동기는 호출된 함수의 리턴에 주목한다. Blocking & Nonblocking 제어권이란 자신의 코드를 실행할 권리 정도로 보면 된다. Blocking Blocking은 A함수가 B함수를 호출할 때 제어권도 넘긴다. 제어권을 잃은 A함수는 자신의 코드를 실행하지 못하고, 반대로 B함수는 호출됨과 동시에 자신의 함수를 실행하게 된다. B함수가 신나게 자신의 코드를 다 실행하고 나면 리턴값과 함께 제어권을 다시 A함수로 넘겨준다. 그러면 그제서야 제어권이 생긴 A함수는 자신의 나머지 코드를 실행하게 된다. 이걸 함수 스택관점에서 보..
순열 ( nPr ) static int N, R; static int[] input, numbers; public static void permutation(int cnt, int flag) { // cnt: 직전까지 뽑은 수개수, flag: 뽑힌 수들에 대한 플래그 비트열 if(cnt == R) { System.out.println(Arrays.toString(numbers)); return; } // 입력받은 모든 수를 현재 자리에 넣어보기 for (int i = 0; i < N; i++) { if((flag&(1
문제 (11053번) 가장 긴 증가하는 부분 수열 링크 : https://www.acmicpc.net/problem/11053 사용 언어 : JAVA 내 생각 이 문제는 종만북에서 본 문제라서 어렵지 않게 풀 줄 알았는데 본지 너무 오래되어서 다 까먹고 책이랑 비교하며 풀 수 있었다.그런데 최근에 다른 백준 문제를 풀다가 다른 방법이 있다는 것을 알았다.(후에 포스팅 올릴 것...) 사실 둘이 탐색 방향만 다를 뿐 같은 아이디어라 해도 무방하다. 먼저 종만북의 알고리즘이다. S[0...n-1]을 차례로 탐색하며 S[start]보다 큰 S[next]를 찾고, 그 next에서 시작하는 lis의 길이에 1을 더하는 것이다. 재귀함수를 호출하며 메모이제이션을 적용하면 더 빠른 시간에 답을 찾을 수 있다. 이때 ..
* 본 게시물은 [핵심만 골라 배우는 안드로이드 스튜디오3 & 프로그래밍] 도서를 참고하여 작성되었습니다. Activity 액티비티는 컴포넌트를 더 높은 수준의 개념으로 끌어올린, 어플의 기능을 갖는 단일의 독립 실행형 모듈이다. 재사용성, 상호 운용성이 극대화되어있다. 그리고 하나의 사용자 인터페이스 화면과 그 기능에 밀접한 관련이 있다. EX) 한 일정 관리 어플에서 당일날 설정된 일정만 보여주는 화면 익월 달력을 보여주는 화면 일정을 설정하는 화면 등으로 이루어 진다면 Activity를 사용해 이것들을 하나의 기능적 모듈로 두고, 인터페이스 화면(이벤트 처리 포함)과 함께 관리할 수 있다. 그리고 액티비티끼리는 완전히 독립되어 있다. 따라서 액티비티 사이에 함수나 변수를 공유하는 것은 불가능하다. ..
문제 (15954)인형들 링크 : https://www.acmicpc.net/problem/15954 사용 언어 : JAVA 카카오프렌즈 스토어를 관리하는 브라이언은 어떠한 특정한 곳에 인형들을 배치하고자 하는데, 그곳에 인형들을 선택하는 방법은 다음과 같다. 먼저 비슷한 인형이 가깝게 위치하도록 서로 다른 N개의 인형을 종류당 한 개씩 일렬로 배치한다. 그 후, 선호하는 사람의 수의 표준편차가 최소가 되는, K개 이상의 연속된 위치에 있는 인형들을 선택하여 그들을 같은 곳에 배치한다. 위의 방법으로 인형들을 선택했을 때, 선택된 인형들의 선호하는 사람의 수의 표준편차를 구하여라. 입력 값 첫 번째 줄에 N과 K가 주어진다. N은 1 이상 500 이하의 정수이고, K는 1 이상 N 이하의 정수이다. 두 ..
문제 (15953)상금 헌터 링크 : https://www.acmicpc.net/problem/15953 사용 언어 : JAVA 제이지는 자신이 코드 페스티벌에 출전하여 받을 수 있을 상금이 얼마인지 궁금해졌다. 그는 자신이 두 번의 코드 페스티벌 본선 대회에서 얻을 수 있을 총 상금이 얼마인지 알아보기 위해, 상상력을 발휘하여 아래와 같은 가정을 하였다. 제1회 코드 페스티벌 본선에 진출하여 a등(1 ≤ a ≤ 100)등을 하였다. 단, 진출하지 못했다면 a = 0으로 둔다. 제2회 코드 페스티벌 본선에 진출하여 b등(1 ≤ b ≤ 64)등을 할 것이다. 단, 진출하지 못했다면 b = 0으로 둔다. 제이지는 이러한 가정에 따라, 자신이 받을 수 있는 총 상금이 얼마인지를 알고 싶어한다. 입력 값 첫 번..