Thief of Wealth
[Javascript] 내가 쓰려고 만든 이분탐색/이진탐색 코드
개발/Javascript 2020. 12. 1. 01:34

www.acmicpc.net/problem/1920 1920번: 수 찾기 첫째 줄에 자연수 N(1≤N≤100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1≤M≤100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들이 A안 www.acmicpc.net 위 문제를 풀었던 소스 코드이다. 'use strict' const readline = require("readline"); const rl = readline.createInterface({ input: process.stdin, output: process.stdout, }); const binarySearch = (array, target, start, end) =..

[Javascript] 내가 쓰려고 만든 자바스크립트 우선순위큐(Priority Queue)/Heap
개발/Javascript 2020. 11. 30. 00:34

www.acmicpc.net/problem/14241 14241번: 슬라임 합치기 영선이와 효빈이는 슬라임을 합치는 게임을 하고 있다. 두 사람은 두 슬라임을 골라서 하나로 합쳐야 한다. 게임은 슬라임이 하나 남았을 때 끝난다. 모든 슬라임은 양수 크기를 가지고 있다. 두 www.acmicpc.net 문제를 풀 수 있는 정도로 구현하였고 가장 큰값을 추출해내는 MaxHeapTree이다. 단, www.acmicpc.net/problem/15903 처럼 BigInt가 필요한 경우에는 값이 infinity로 통일되어서 실패한다. BigInt인 경우를 적절하게 예외처리할 수 있게 바꿔야한다 ㅠ 'use strict' function PriorityQueue(comparator) { this.defaultComp..

[Javascript] 내가 쓰려고 만든 자바스크립트 코드 컨벤션
개발/Javascript 2020. 11. 29. 22:39

=== 를 썼는지 depth가 2가 넘어가는지 세미콜론 붙어있는지 전역변수를 사용 안했는지 함수는 1가지의 기능만 사용하는지 캐멀케이스로 구현되어 있는지 기능별로 파일을 나누었는지 Const를 let보다 위에 선언했는지. Const, let은 선언시점에 바로 할당했는지 함수 끝에 ; 붙였는지 값을 하드코딩하지 않았는지 Space, tab 혼용하지 않았는지 private한 변수에 _를 적절히 적용했는지 (function내부에 this는 기본적으로 모두 접근가능하고 const/let/var로 선언하면 외부에서 접근할 수 없다!) 혹시 모르니 arrow function보다 그냥 function 사용하기 (arrow function 은 this 바인딩을 갖지 않는다 / arrow function은 new를 호출..

[Javascript] MinHeapTree 사용하기 (11279 최대힙)
개발/Javascript 2020. 11. 29. 18:56

www.acmicpc.net/problem/11279 11279번: 최대 힙 첫째 줄에 연산의 개수 N(1≤N≤100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0이 www.acmicpc.net 문제를 풀기 위해 가장 최대값을 먼저 pop해주는 큐를 구현해야한다. 템플릿으로 사용하기 위한 최대힙을 사용한 코드는 다음과 같다. 'use strict' class MaxHeapTree { values = [] isEmpty() { return this.values.length === 0 } parentIndexOf(index) { return Math.floor((index - 1) / 2..

[Javascript] 우선순위 큐 활용하여 문제 풀기 (1927 최소힙)
개발/Javascript 2020. 11. 29. 18:28

www.acmicpc.net/problem/1927 1927번: 최소 힙 첫째 줄에 연산의 개수 N(1≤N≤100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0이 www.acmicpc.net 우선순위 큐를 사용하는 간단한 문제인데, python에서는 heap 라이브러리가 있어서 쉽게 풀 수 있었으나, javascript에는 우선순위 큐를 직접 구현하여 해결해야한다는 것 때문에 조금 낮설었다. 앞으로 코딩테스트를 하면, 자바스크립트에서 제공하지 않는 라이브러리로 문제를 해결해야할 일이 많아질 텐데 템플릿을 복사해가며 문제를 해결해야할 것 같다는 생각을 했다. 아래는 MinHeap소스코드..

[Javascript] 자바스크립트의 "use strict"는 도대체 무엇일까?
개발/Javascript 2020. 11. 29. 00:39

"use strict" 도대체 무엇일까? 어느 코드에서는 있고, 어느 코드에서는 없고 항상 맨위에, 또는 함수 내에 선언되어 있는 이 문구는 도대체 무엇인가를 고민하고 잠시 미룬뒤 꽤 시간이 지나서 이제야 정답을 찾고 포스팅한다. 결론은, "use strict"는 해당 파일 전체나, 함수내의 맨 윗줄에 선언함으로써 자바스크립트 코드를 좀 더 엄격하게 심사를 하고 실행시킬 수 있게 해주는 기능을 한다. 즉, 흔히 발생하는 코딩 문법오류나 명확하게 짜이지 않은 코드, 취약점이 있는 코드들에 대해 예외를 발생시키는 기능을 한다! 되도록이면 써주는 습관을 들여야겠다.

[Javascript] 자바스크립트 map() vs foreach() 비교하기
개발/Javascript 2020. 11. 28. 22:48

arr.map(), arr.foreach() 자바스크립트에서는 arr의 각 요소에 어떠한 처리를 하고 싶을 때, 보통 for문을 쓰거나 map, foreach를 사용한다. 하지만 모든 함수에는 이유가 있는법. 각 함수의 특징을 알아보자. 공통점으로는 map과 foreach 내부에는 콜백함수를 선언할 수 있다. 함수의 인자로는 대상 어레이의 각 원소에 해당하는 elem, 해당 elem의 index, 그리고 대상 어레이인 array를 인자로 받을 수 있다. 차이점으로는 map은 콜백함수의 반환값을 원소로하는 어레이를 새로 생성하여 반환하고 대상이 된 객체는 아무 영향도 끼치지 않는다. 반면에 foreach는 콜백함수의 반환값을 원소로 하는 어레이를 기존 배열에 바로 적용시키고, 최종적으로 반환값이 존재하지 ..

[Javascript] console.log() 를 많이 사용할 때의 시간초과/느림 현상
개발/Javascript 2020. 11. 27. 19:44

오늘 기이한 경험을 했다. https://www.acmicpc.net/problem/10825 10825번: 국영수 첫째 줄에 도현이네 반의 학생의 수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 한 줄에 하나씩 각 학생의 이름, 국어, 영어, 수학 점수가 공백으로 구분해 주어진다. 점수는 1보다 크거나 같고, 1 www.acmicpc.net 단순 백준 정렬문제를 풀고 있었는데, 시간초과가 발생한 것이다. 도저히 시간초과가 발생한 것이 이해되지 않아서 python으로 정답을 빠르게 맞추고 javascript로 풀이한 코드를 보았다. 코드는 비슷했다. 차이가 있다면 한줄 한줄 console.log() 으로 출력한 것이 아니고, 정답값들을 문자열 1개에 모아서 한번에 출력하고 있었다. 나도 ..

profile on loading

Loading...