문제https://www.acmicpc.net/problem/2606 풀이해당 문제는 DFS와 BFS 풀이 모두 가능한 문제이다. 간단한 문제이기 때문에 DFS와 BFS를 다시 연습하기 위해 풀이했다. BFS 코드const input = require('fs') .readFileSync(process.platform === 'linux' ? '/dev/stdin' : __dirname + '/example.txt') .toString().trim().split('\n');const n = +input.shift();const linked = +input.shift();const arr = input.map(e => e.split(' ').map(Number));const map = {};const ..
JavaScript
문제https://www.acmicpc.net/problem/2292 풀이벌집의 방 수가 6의 배수대로 증가하는 모습을 보며 2 번째 방의 시작인 2와 끝인 7의 변화를 지정해 주며, 입력되는 N이 해당 범위 내에 속하는 지를 확인하며 시뮬레이션 한다. 코드const input = require('fs') .readFileSync(process.platform === 'linux' ? '/dev/stdin' : __dirname + '/example.txt') .toString().trim().split('\n');let n = +input.shift();if (n === 1) console.log(1);else { let cnt = 1; let [min, max] = [2, 7]; while ..
문제 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀이필자는 해당 문제를 단순 구현으로 풀이하려 했다. DP 알고리즘을 이용해 이전 문자열 + '0'.repeat(5 ** (i - 1)) + 이전 문자열 로 문자열을 구해 풀려했지만, 특정 케이스에서는 컴파일 에러가 발생했다. 그래서 수학적인 접근을 시도했다. 우선 문자열에서 규칙을 찾아보자면, 1의 개수는 4 * n개 이다. 그리고 0은 5개로 자른 문자열에서 항상 2번 인덱스에 위치한다. 이와같은 특징을 이용해 1과 0을 구분할 수 있는 check 함수를 제작해보자.check 함수에서는 크게 3가지 경우를 처리한다.1. 입력된 인덱스 값이 5보다..
동기 처리와 비동기 처리함수를 호출하면 함수 코드가 평가되어 함수 실행 컨텍스트가 생성되며 콜 스택에 푸시되고 함수 코드가 실행된다. 함수 코드의 실행이 종료되면 실행 컨텍스트는 실행 컨텍스트 스택에서 팝되어 제거된다.const foo = () => {};const bar = () => {};foo();bar(); 함수의 실행 순서는 실행 컨텍스트 스택으로 관리한다. JS 엔진은 단 하나의 실행 컨텍스트 스택을 갖는다. 이처럼 JS 엔진은 한 번에 하나의 태스크만 실행할 수 있는 싱글 스레드 방식으로 동작하며 이러한 동작 방식 때문에 이전 작업이 끝나기전에 다음 작업을 할 수 없는 블로킹 현상이 발생한다.// sleep 함수는 일정 시간(delay)이 경과한 이후에 콜백 함수(func)를 호출한다.fun..
이벤트 전파DOM 트리 상에 존재하는 DOM 요소 노드에서 발생한 이벤트는 DOM 트리를 통해 전파된다. 이를 이벤트 전파라 한다. Apple Banana Orange ul 요소의 자식 요소인 li 요소를 클릭하면 클릭이벤트가 발생하며 생성되는 이벤트 객체는 이벤트를 발생시킨 이벤트 타깃을 중심으로 DOM 트리를 통해 전파된다.캡처링 단계 : 이벤트가 상위 요소에서 하위 요소 방향으로 전파타깃 단계 : 이벤트가 이벤트 타깃에 도달버블링 단계 : 이벤트가 하위 요소에서 상위 요소 방향으로 전파ul 요소에 이벤트 핸들러를 바인딩한 예제를 보며 알아보자. Apple Banana Orange 이벤트 핸들러 어트리뷰트/프로퍼티 방식으로 등록한 이벤트 핸들러는 타깃..
문제 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 풀이해당 문제는 문제를 해석하는데 어려움이 있었다... 일단 프로세스를 문제에서 설명해주기 때문에 프로세스를 따르며 구현하면 큰 어려움은 없다. 코드function solution(p) { const check = (st) => { const stack = []; for (let i = 0; i { let res = ''; let cnt = 0; if (w.length === 0) return ''; for (let i = 0; i