Thief of Wealth
[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는 콜백함수의 반환값을 원소로 하는 어레이를 기존 배열에 바로 적용시키고, 최종적으로 반환값이 존재하지 ..

article thumbnail
[BOJ] 누울 자리를 찾아라 (js)
개발/알고리즘 2020. 11. 28. 12:20

문제 일 년 동안 세계일주를 하던 영식이는 여행을 하다 너무 피곤해서 근처에 있는 코레스코 콘도에서 하룻밤 잠을 자기로 하고 방을 잡았다. 코레스코 콘도에 있는 방은 NxN의 정사각형모양으로 생겼다. 방 안에는 옮길 수 없는 짐들이 이것저것 많이 있어서 영식이의 누울 자리를 차지하고 있었다. 영식이는 이 열악한 환경에서 누울 수 있는 자리를 찾아야 한다. 영식이가 누울 수 있는 자리에는 조건이 있다. 똑바로 연속해서 2칸 이상의 빈 칸이 존재하면 그 곳에 몸을 양 옆으로 쭉 뻗으면서 누울 수 있다. 가로로 누울 수도 있고 세로로 누울 수도 있다. 누울 때는 무조건 몸을 쭉 뻗기 때문에 반드시 벽이나 짐에 닿게 된다. (중간에 어정쩡하게 눕는 경우가 없다.) 만약 방의 구조가 위의 그림처럼 생겼다면, 가로..

[BOJ] 11728 배열 합치기 (js)
개발/알고리즘 2020. 11. 27. 23:48

문제 정렬되어있는 두 배열 A와 B가 주어진다. 두 배열을 합친 다음 정렬해서 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 배열 A의 크기 N, 배열 B의 크기 M이 주어진다. (1 ≤ N, M ≤ 1,000,000) 둘째 줄에는 배열 A의 내용이, 셋째 줄에는 배열 B의 내용이 주어진다. 배열에 들어있는 수는 절댓값이 109보다 작거나 같은 정수이다. 출력 첫째 줄에 두 배열을 합친 후 정렬한 결과를 출력한다. 핵심 아이디어 언어에 따라 전략을 다르게 짜야하는데, python은 그냥 배열2개를 더해서 sorted를 해주면되고, javascript같은 경우는 시간초과가 난다. A,B가 정렬되어 있으므로 앞 원소부터 비교해가며 정답배열에 차곡차곡 쌓는 방법을 써야한다. 이때 앞 원소를 pop해주는 방식..

[BOJ] 10610 30 (js)
개발/알고리즘 2020. 11. 27. 15:52

문제 어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶어한다. 미르코를 도와 그가 만들고 싶어하는 수를 계산하는 프로그램을 작성하라. 입력 N을 입력받는다. N는 최대 10^5개의 숫자로 구성되어 있으며, 0으로 시작하지 않는다. 출력 미르코가 만들고 싶어하는 수가 존재한다면 그 수를 출력하라. 그 수가 존재하지 않는다면, -1을 출력하라. 핵심 아이디어 단순히 생각하면 permutation을 사용하여 30으로 나누어떨어지는 수를 만들고 그 중에서가 가장 큰 수를 구하면 될 것 같지만. n이 최대 10^5개의 숫자로 이루어져있으므로, 100000자리의 숫자가 존재하..

[BOJ] 7568 덩치 (js)
개발/알고리즘 2020. 11. 24. 23:12

const readline = require("readline"); const rl = readline.createInterface({ input: process.stdin, output: process.stdout }); const solution = (l) => { l = l.map(_l => { let [a, b] = _l.split(" "); return [parseInt(a), parseInt(b)]; }); const answer = [] l.forEach(_l => { let cnt = 0; l.forEach(e => { if (e[0] > _l[0] && e[1] > _l[1]) { cnt++; } }); answer.push(cnt + 1); }) console.log(answer.joi..

[BOJ] 11021 A+B -7 (js)
개발/알고리즘 2020. 11. 24. 22:01

문제 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 { let cnt ..

profile on loading

Loading...