본문 바로가기

ALGORITHM

(4)
(Algorithm/Javascript) stack이란? 자바스크립트로 stack구현하기 stack 자료구조란?stack은 자료구조 중 하나이다.  stack은 데이터가 나중에 들어온 것이 먼저 나가는 구조를 가지고 있다.  (LIFO-Last In, First Out - 후입선출) 바구니에 담긴 cd를 생각하면 편하다. 바구니의 바닥은 막혀있기에 가장 아래에 있는 cd를 꺼내기 위해서는 순서대로 위에서부터 cd를 꺼내야 한다.    stack 사용처stack은 undo 기능(사용자 명령을 저장했다가 가장 최근에 한 명령부터 되돌림) 등에 사용된다. 자바스크립트 엔진의 호출스텍 역시 stack 구조이다. 따라서 최대 호출 스택 크기를 초과하면 stack overflow 에러가 발생할 수 있다.   stack 구현자바스크립트는 별도의 스택 자료구조를 제공하지 않는다. 대신, 자바스크립트의 배열..
(Algorithm/Javascript) 트리 노드 만들고 xml 형태로 출력하기 상속관계가 위와 같은 트리가 있다고 가정하면 상속관계는 아래와 같이 표기할 수 있다. 이때 최상위 부모인 A는 부모가 없으므로 부모 정보에 null을 표기했다.//[parentName, myName]const relations = [ [null, "A"], ["A", "B"], ["A", "C"], ["B", "D"], ["B", "E"], ["C", "F"],];   트리 노드 만들기이후 상속 정보가 담긴 relation을 순회하면서 노드를 만든다. myName으로 만들어진 노드가 없다면 노드를 만들고, parentName가 null이 아닌 경우를 제외하고 parentName으로 만들어진 노드가 없다면 노드를 만들고, parentName노드 자식 리스트에 myName 노드를 추가한다. 이렇게..
(백준/구름) 자바스크립트로 입력 출력 받기, 백준/구름 세팅하기, 입력 유형별 코드 정리 프로그래머스와 달리 백준과 구름은 node.js로 입력과 출력을 직접 구현해야 하기에, 처음 시작할 때 다소 복잡하고 어렵게 느껴질 수 있다.  따라서 이번 포스팅에서는 입력 유형별로 기본 세팅 코드를 정리하려고 한다. 여기서 사용된 코드는 구름의 기본 코드를 기반으로 작성되었다.    1. 입력이 한 줄이고 띄어쓰기로 구분되어 있을 때const readline = require('readline');(async () => { let rl = readline.createInterface({ input: process.stdin }); const input = []; for await (const line of rl) { input.push(...line.split(" ").map(x=>..
(Algorithm) 알고리즘, 문제해결 패턴, 빈도 수 세기 패턴, Frequency Counter 이번 포스팅은 문제 해결 패턴 중 빈도수 세기 패턴에 대해서 포스팅하고자 한다. 해당 패턴은 특정 값의 빈도수를 체크할 때 유용하다. 객체나 세트를 이용해, 중복되는 값을 세며, O(N)의 시간복잡도를 갖는다. 예시 문제 1두개의 숫자가 주어졌을 때, 두 숫자의 자릿수가 같은 빈도수를 갖는지 확인하는 함수 sameNumFrequency를 만들어라. [예시 입출력]sameNumFrequency(12, 21) //truesameNumFrequency(45512, 25541) //truesameNumFrequency(1123, 2311) //truesameNumFrequency(13, 2311) //falsesameNumFrequency(42, 12) //falsesameNumFrequency(2, 22) /..