목록멋있는 JavaScript (22)
너무너무 멋져 눈이눈이 부셔

자바스크립트 동작 원리 자바스크립트는 동기적 언어이다. 한번에 한 줄 순서대로 실행한다. 그러나, 가끔가다 비동기적인 처리를 할 수 있다. 자바스크립트 대부분의 DOM 이벤트리스너, (setTimeout 등의 timer 함수 , ajax 요청은 비동기식으로 동작한다. 한줄씩 처리하는게 아니라, 오래걸리는 건 제끼고 빨리 되는 걸 먼저! 일반적인 언어는 1+1을 하고, 1초 쉰 다음 2+2를 하고 싶을 때 이렇게 위에서 아래로 쭉 적는다. 그럼 이렇게 했을 때는? 기대값은 2 -> 쉬고 -> 4 -> 6 이었겠지만 2 -> 6 -> 쉬고 ->4 이런 방식으로 나온다 왜 그런가요???? 브라우저 동작 방식을 이해하자. 웹 브라우저 내부 자바스크립트는 싱글 스레드 언어로 코드를 한 번에 하나만 실행한다. 그러..
문제 KOI 부설 과학연구소에서는 많은 종류의 산성 용액과 알칼리성 용액을 보유하고 있다. 각 용액에는 그 용액의 특성을 나타내는 하나의 정수가 주어져있다. 산성 용액의 특성값은 1부터 1,000,000,000까지의 양의 정수로 나타내고, 알칼리성 용액의 특성값은 -1부터 -1,000,000,000까지의 음의 정수로 나타낸다. 같은 양의 두 용액을 혼합한 용액의 특성값은 혼합에 사용된 각 용액의 특성값의 합으로 정의한다. 이 연구소에서는 같은 양의 두 용액을 혼합하여 특성값이 0에 가장 가까운 용액을 만들려고 한다. 예를 들어, 주어진 용액들의 특성값이 [-99, -2, -1, 4, 98]인 경우에는 특성값이 -99인 용액과 특성값이 98인 용액을 혼합하면 특성값이 -1인 용액을 만들 수 있고, 이 용액..
자바스크립트로 알고리즘을 풀 수 있고 프로젝트도 가능하지만 복습 겸 정리해 보았다. 단순 블로그 글은 정확도나 깊이가 떨어진다고 생각해서 강의, 문서 등을 참고했다. 자바스크립트란 "웹 페이지를 동적으로(생동감을 불어 넣기 위해) 만들기 위해 탄생한 프로그래밍 언어" - 웹 페이지의 HTML 안에 스크립트(JS로작성한 프로그램)를 작성 가능. 웹페이지를 불러올 때 스크립트가 자동 실행 - 브라우저 외에도 서버에서 실행이 가능하며, 자바스크립트 엔진이 있으면 모든 디바이스에서도 동작. 자바스크립트는 일반적으로 프로그래밍 언어로서 기본 뼈대를 이루는 ECMAScript와 브라우저가 별도 지원하는 클라이언트 사이드 Web API, 즉 DOM, BOM, Canvas, XMLHttpRequest, Fetch, r..

파이썬 알고리즘 인터뷰 책의 79번 "키에 따른 대기열 재구성" 문제입니다.(하지만 나는 자바스크립트를 사용하지...) You are given an array of people, people, which are the attributes of some people in a queue (not necessarily in order). Each people[i] = [hi, ki] represents the ith person of height hi with exactly ki other people in front who have a height greater than or equal to hi. Reconstruct and return the queue that is represented by the ..
문제 매우 큰 도화지에 자를 대고 선을 그으려고 한다. 선을 그을 때에는 자의 한 점에서 다른 한 점까지 긋게 된다. 선을 그을 때에는 이미 선이 있는 위치에 겹쳐서 그릴 수도 있는데, 여러 번 그은 곳과 한 번 그은 곳의 차이를 구별할 수 없다고 하자. 이와 같은 식으로 선을 그었을 때, 그려진 선(들)의 총 길이를 구하는 프로그램을 작성하시오. 선이 여러 번 그려진 곳은 한 번씩만 계산한다. 입력 첫째 줄에 선을 그은 횟수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 다음 N개의 줄에는 선을 그을 때 선택한 두 점의 위치 x, y (-1,000,000,000 ≤ x < y ≤ 1,000,000,000)가 주어진다. 출력 첫째 줄에 그은 선의 총 길이를 출력한다. 풀이 주석으로 풀이를 달았다. ..

풀이 과정 2 1 3 5 4 가 있다면, 최솟값이라고 마냥 2+1 이렇게 하면 안된다. 당연하지만, 그럼 다른 날에는 근손실을 3보다 적게 만들 수 없으니까. 1 4 2 3 5 이렇게 5가 정답이다. 1. 두개를 짝지어서 합을 만들어줘야 하는데, 다른 남은 모든 날에도 배열의 남은 2가지 요소를 합쳤을 때 이 합보다 근손실이 같거나 작아야 한다. (배열 내의 두 요소 최솟값의 합이 아니다.) 2. 두개씩 짝지어 줘야하는데 그 중에서 최솟값을 만들려면, 제일 큰 값은 제일 작은 값이랑 더해야 한다. 3. 그래서 값이 홀수라면 짝지었을 때 남기 때문에, 마지막 요소는 따로 빼줬다. 이렇게 계속 풀었는데 아무리 해도 1초컷 틀렸습니다가 나왔다. 나는 로직은 맞는거 같은데??? 하고 남들 파이썬 코드(자스 풀이..
문제 한 개의 회의실이 있는데 이를 사용하고자 하는 N개의 회의에 대하여 회의실 사용표를 만들려고 한다. 각 회의 I에 대해 시작시간과 끝나는 시간이 주어져 있고, 각 회의가 겹치지 않게 하면서 회의실을 사용할 수 있는 회의의 최대 개수를 찾아보자. 단, 회의는 한번 시작하면 중간에 중단될 수 없으며 한 회의가 끝나는 것과 동시에 다음 회의가 시작될 수 있다. 회의의 시작시간과 끝나는 시간이 같을 수도 있다. 이 경우에는 시작하자마자 끝나는 것으로 생각하면 된다. 입력 첫째 줄에 회의의 수 N(1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N+1 줄까지 각 회의의 정보가 주어지는데 이것은 공백을 사이에 두고 회의의 시작시간과 끝나는 시간이 주어진다. 시작 시간과 끝나는 시간은 231-1보다 작거..
까먹을 때마다 추가 중이다. 1. 배열 arr.splice(1,1) -> 인덱스 1번쨰 요소에서부터 1개를 없애주세요. arr.splice(1,0,"민지") -> 배열의 1번째에다 "민지"를 추가해주세요. 중간 값을 0으로 하고, 뒤에 요소를 추가하면 그 요소를 해당 인덱스에 삽입할 수 있다. arr.shift() -> 맨 앞에 거 없애주세요. arr.sort() -> 유니코드 순으로 정렬 arr.sort(a,b=>a-b) => 콜백 함수로 리턴값을 정해줘야 오름/내림 차순 정렬이 된다. a-b는 오름차순, b-a는 내림 차순이다.두 숫자의 차를 가지고 판별한다. sort를 2차원 배열에서 쓸 때 : [ [ 1, 4 ], [ 5, 7 ], [ 8, 11 ], [ 12, 14 ] ] 위 값을 배열 안의 배..