DFS/BFS 이전에 자료구조 기초를 자바스크립트로 구현하는 방법스택, 큐삽입 push, 삭제pop 함수가 핵심적으로 사용된다.이외에도 오버플로, 언더플로를 고민해야한다오버플로 : 특정한 자료구조가 수용할 수 있는 데이터의 크기를 이미 가득 찬 상태에서 삽입 연산을 수행할때 발생언더플로 : 데이터가 들어있지 않은 상태에서 삭제 연산을 수행할때 발생 스택 Stack선입후출 구조. 출입구가 하나라고 생각하면 된다.예제 5-1const stack = [];stack.push(5);stack.push(2);stack.push(3);stack.push(7);stack.pop();stack.push(1);stach.push(4);stack.pop();console.log(stack);//[5,2,3,1]consol..
🙌문제설명N개의 수로 이루어진 수열 A1, A2, ..., AN이 주어진다. 또, 수와 수 사이에 끼워넣을 수 있는 N-1개의 연산자가 주어진다. 연산자는 덧셈(+), 뺄셈(-), 곱셈(×), 나눗셈(÷)으로만 이루어져 있다.우리는 수와 수 사이에 연산자를 하나씩 넣어서, 수식을 하나 만들 수 있다. 이때, 주어진 수의 순서를 바꾸면 안 된다.예를 들어, 6개의 수로 이루어진 수열이 1, 2, 3, 4, 5, 6이고, 주어진 연산자가 덧셈(+) 2개, 뺄셈(-) 1개, 곱셈(×) 1개, 나눗셈(÷) 1개인 경우에는 총 60가지의 식을 만들 수 있다. 예를 들어, 아래와 같은 식을 만들 수 있다.1+2+3-4×5÷61÷2+3+4-5×61+2÷3×4-5+61÷2×3-4+5+6식의 계산은 연산자 우선 순위를..
🙌문제설명어떤 나라에는 1번부터 N번까지의 도시와 M개의 단방향 도로가 존재한다. 모든 도로의 거리는 1이다.이 때 특정한 도시 X로부터 출발하여 도달할 수 있는 모든 도시 중에서, 최단 거리가 정확히 K인 모든 도시들의 번호를 출력하는 프로그램을 작성하시오. 또한 출발 도시 X에서 출발 도시 X로 가는 최단 거리는 항상 0이라고 가정한다.예를 들어 N=4, K=2, X=1일 때 다음과 같이 그래프가 구성되어 있다고 가정하자.이 때 1번 도시에서 출발하여 도달할 수 있는 도시 중에서, 최단 거리가 2인 도시는 4번 도시 뿐이다. 2번과 3번 도시의 경우, 최단 거리가 1이기 때문에 출력하지 않는다. 입력첫째 줄에 도시의 개수 N, 도로의 개수 M, 거리 정보 K, 출발 도시의 번호 X가 주어진다. (..
개념 머릿속에 있는 알고리즘을 소스코드로 바꾸는 과정 `피지컬`을 요구하는 문제 완전탐색 : 모든 경우의 수를 주저 없이 다 계산하는 해결방법 시뮬레이션 : 문제에서 제시한 알고리즘을 한 단계씩 차례대로 직접 수행 ❓자바스크립트 메모리 제약 사항 일반적으로 컴퓨터는 1초에 `10억(10^8)`번 연산의 연산이 가능하다. C++이나 파이썬은 기준이 정해져 있지만, 자바스크립트는 대략 `10^7`번 정도를 기준으로 계산하라는 이야기가 있다. 공식적으로는 정의되어있지 않고, 언어 자체의 특성보다는 브라우저나 실행 환경의 성능에 따라 다를 수 있다고 한다. 정확한 "1초에 몇 번"의 연산으로는 일반적으로 표현되지 않는 대신에, 브라우저나 실행 환경에서의 실제 성능 측정을 통해 어떤 연산이 더 효율적인지 판단하는..
개념 탐욕법 현재 상황에서 지금 당장 좋은 것만 고르는 방법 현재의 선택이 나중에 미칠 영향에 대해서는 고려하지 않는다 다익스트라 알고리즘 - 엄밀히 말하면 그리디 알고리즘으로 분류 암기가 필요 없음 해법이 정당한지 검증이 필요 그리디와 정렬 알고리즘과 짝을 이뤄 자주 출제됨 ❓문제를 만났는데 바로 문제 유형을 파악할 수 없는 경우 그리디 알고리즘을 의심하고 해법을 고민 그리디로 해결할 수 없다면 → 다이나믹 프로그래밍이나 그래프 알고리즘으로 해결할 수 있는지 고민 예제 3-1 거스름돈 const COIN_TYPES = [500,100,50,10]; let n = 1260; let cnt = 0; for(const coin of COIN_TYPES) { cnt += Math.floor(n/coin); n..
조건문? 주어진 조건식이 참이냐 거짓이냐에 따라 다른 명령을 처리하도록 만든 수행문이다. 조건문은 프로그램이 복잡한 명령을 수행할 수 있게 하므로 유용하다. 조건식? 계산결과가 참(True) 또는 거짓(False)의 값을 갖는 식이다. 비교연산자와 불리언(Boolean)을 이용하여 만들 수 있다. 불리언 Boolean 계산 결과가 `true` 아니면 `false`로 나오는 것을 불리언 데이터타입이라고 한다 * JS 메소드에는 불리언 값을 계산해주는 객체가 있다..!! 비교연산자 JS 에서는 `==`의 비교방식과 `===`의 비교방식이 다르다. `1=='1'` VS `1==='1'` 데이터타입이 다른경우 첫번째 방식은 같다고 판단하고, 두번째 방식은 데이터타입까지 비교해서 다르다고 판단한다. 이외에도 `=..
자바스크립트는 다른 언어의 for문으로 작성해야 할 코드를 메소드를 사용해서 반복해서 탐색할 수 있다는 장점이 있다. 그 전에 반복문을 정리해야, 메소드를 잘 쓸 수 있지 않을까?? 반복적으로 실행해야 할때 코드를 작성한다 종류 for for...in for...of forEach() - Array 메소드 while do...while for let str = ''; for (let i = 0; i < 9; i++) { str = str + i; } 괄호로 감싸고 세미콜론으로 구분한 세 개의 선택식과, 반복을 수행할 문(주로 블럭문)으로 이루어져 있다 for 문 안에 3가지 요소가 꼭 필요하다 `let i = 0;` 변수 let i 를 선언하고, 0으로 할당한다. 반복문 초기값을 설정한다. `i < 9;..
함수를 사용하는 이유? 원하는 시점에서 함수를 재사용할 수 있다는 생산성 증가 측면 함수 기능 단위로 테스트를 실행할 수 있는 테스트 용이성 유지보수성, 코드의 가독성 이러한 장점을 모듈화 라고 한다. * 모듈화? 기능적인 분리를 통해서 다른 프로그램을 개발할 때에도 유지보수와 코드 재사용성을 높여 소프트웨어를 설계하는 기법 utils와 개념이 유사하며, 객체지향을 배웠다면 간단히 이해가 될 것이다 두가지 개념이 사용된다 import : 사용하는 쪽, 함수를 불러옴 export : 내보내는 쪽 표현 방법 함수 선언식 함수 표현식 화살표 함수 함수 선언문 다른 언어들과 유사한 형태를 가지고 있다. function calcRectArea(width, height) { return width * height;..
함수 개념 함수는 프로그래밍 적으로 단일 기능을 만들어내고, 함수들이 모여서 작동하는 프로그램을 만든다고 생각한다 수학적으로 동일한 입력값을 주면 동일한 출력값을 나오게 하는 동작방식을 말한다 어릴때 배웠던 `f(x) = x+1 ` 같은것... 프로그래밍에서도 다르지 않다! 국립특수교육원에서는 함수를 어떤 일을 수행하는 명령들을 하나로 묶어서 이름을 부여하고 필요할 때마다 그 함수를 호출하여 사용할 수 있는 프로그래밍 방법 이라고 정의한다. 함수형 프로그래밍 함수형 프로그래밍은 성공적인 프로그래밍을 위해 부수 효과를 미워하고, 조합성을 강조하는 프로그래밍 패러다임 부수 효과를 미워한다 -> 순수함수를 만든다. 조합성을 강조한다 -> 모듈화 수준을 높인다. 순수함수 -> 오류를 줄이고 안정성을 높인다. 모..