2024/12 20

[모딥다] JS (3) - 스코프

1. 스코프: 유효범위라고도 하며, 모든 식별자(변수 이름, 함수 이름, 클래스 이름)는 자신이 선언된 위치에 의해 다른 코드가 식별자 자신을 참조할 수 있는 유효 범위가 결정되는 것을 스코프라고 한다. : 식별자가 유효한 범위를 말함 2. 식별자 결정: 이름이 같은 두 개의 변수 중에서 어떤 변수를 참조해야 할 것인지를 결정해야 하는 것. 스코프 : 유효범위라고도 하며, 모든 식별자(변수 이름, 함수 이름, 클래스 이름)는 자신이 선언된 위치에 의해 다른 코드가 식별자 자신을 참조할 수 있는 유효 범위가 결정되는 것을 스코프라고 한다. : 식별자가 유효한 범위를 말함   2. 식별자 결정: 이름이 같은 두 개의 변수 중에서 어떤 변수를 참조해야 할 것인지를 결정해야 하는 것var x = 'global'..

BOJ - 6603 로또

1. 문제 링크 : https://www.acmicpc.net/problem/66032. 문제 티어: 실버23. 문제 유형 : 백트래킹 , 재귀4. 문제 풀이 :  백트래킹 종류로, 단계적으로 문제를 푼다.1) S, K를 입력 받는다. 문제에서 따로 이야기 없이 한 줄에서 입력 받게 했으므로 input에서 첫 번째 요소는 K 나머지는 배열로 입력 받는다.2) 배열과 선택된 숫자(=K)개의 조합을 짜주는 재귀함수를 선언한다. 재귀함수인 이유는 조합은 중복이 허락되지 않기 때문에 기존에 만든 부분은 고정시켜야 하고 나머지 부분만으로 조합을 만들어야 중복이 허용되지 않는다.예를 들어, [1, 2, 3, 4]에서 2개의 원소를 선택하는 경우:가능한 조합: [1, 2], [1, 3], [1, 4], [2, 3],..

BOJ - 10971 외판원 순회 2

1. 문제 링크 : https://www.acmicpc.net/problem/109712. 문제 유형 : 백트래킹3. 문제 티어 : 실버24. 문제 풀이  : 전형적인 모든 경우의 수를 완전 탐색하는 백트래킹 문제 : 모든 도시를 방문 후 다시 돌아와서 그 최소 경로를 구해야  함 : 이 과정에서 방문 처리 유무를 남겨놓아서 다시 방문하지 않도록 하여 연산 속도 빠르게 처리 : 도시 i부터 j까지 가서 그 비용을 현재 측정된 비용에 더한 후 기존에 있던 최솟값과 지속적으로 비교해서 최솟값을 갱신하는 재귀함수 호출하면서 최적의 값 찾음 5. 문제 코드 // 1. 값 입력 받기const fs = require("fs");let input = fs.readFileSync("/dev/stdin").toStrin..

[모딥다] JS (2) - 함수

1. 함수란? : 일련의 과정을 문으로 구현하고 코드 블록으로 감싸서 하나의 실행 단위로 정의한 것: 매개변수 - 함수 내부로 입력을 전달 받는 변수: 인수 - 입력: 반환값 - 출력: 함수 정의를 통해 생성: 함수는 일급객체임 (값의 성질을 갖는 객체를 일급객체라고 함)function addNumber(x,y) { return x + y;} 2. 함수 리터럴: 함수는 객체 타입의 값이다 따라서 함수도 함수 리터럴로 생성할 수 있다. : 함수 리터럴은 function 키워드, 함수 이름, 매개변수 목록, 함수 몸체로 구성된다.var f = function add(x,y) { return x + y; }; * 함수 이름은 생략 가능, 이름이 없는 함수를 무명/ 익명 함수라 함* 매개변수 목록은 ..

[모딥다] JS (1) - 객체 리터럴

1. 객체란?: JS는 객체 기반의 프로그래밍 언어며 거의 모든 겂이 객체다. : 변경 불가능한 원시 값과 달리 객체는 변경 가능한 값이다.: 객체는 0개 이상의 프로퍼티로 구성된 집합이며, 프로퍼티는 키와 값으로 구성된다.: 이미 존재하는 프로퍼티 키를 중복 선언하면 나중에 선언한 프로퍼티가 먼저 선언한 프로퍼티를 덮어쓴다.let person = { name: "John" // 프로퍼티 키 : name , 프로퍼티 값 : "John" age: 22,} :  참고로 프로퍼티 값은 JS에서 사용할 수 있는 모든 값이 될 수 있다.: 프로퍼티 값이 함수인 경우 우리는 메서드라 부른다.var counter = { num = 0, // 프로퍼티 increase : function() { ..

백엔드 입문 (5) - Express 아키텍처 구조

1. 마이크로 프레임워크 vs 풀스택 프레임워크: 익스프레스는 마이크로프레임워크 즉, 미니멀리스트 웹 프레임워크다. 최소 기능을 가지면서 필요한 기능을 플러그인으로 확장하는 프레임워크이다. 장고, 스프링 같은 풀스택 프레임워크들은 디렉터리 구조를 강제하지만 마이크로 프레임워크는 폴더 구조를 강제하지 않는다. 2. 3계층 구조 아키텍처: 서버 개발에서 가장 보편적으로 사용하는 3계층 구조 아키텍처를 적용하고자 한다. MVC 패턴을 적용하기도 좋기 때문이다.: 컨트롤러, 서비스 , 데이터 액세스 계층을 가짐.: 컨트롤러 계층에서는 뷰에서 넘어온 요청을 받아 권한 체크, 유효성 검증 등을 한 후 서비스 계층으로 넘김.: 서비스 계층에서는 비즈니스 로직을 처리한다. 이렇게 비즈니스 로직을 분리하면 각각 다른 컨..

BackEnd Skils 2024.12.08

BOJ - 15652 N과 M(4)

1. 문제 링크 : https://www.acmicpc.net/problem/156522. 문제 티어 : 실버33. 문제 유형 : 백트래킹4. 문제 풀이1) 내림차순을 유지해야 하기 때문에 start 지점을 찾아서 인덱스를 유지 시켜줘야 한다.2) 그 외는 N과 M(3)과 비슷하다.3) 중복 조합을 찾아서 넣어주는 문제다. 5. 문제 코드let result = []; // 결과를 저장할 배열function recursive(current, start, n, m) { if (current.length === m) { result.push(current.join(" ")); // 길이가 M인 수열을 결과에 추가 return; } for (let i = start; i

백엔드 입문 (4) - NoSQL DB 알아보기 - 몽고디비

1. 데이터베이스 : 데이터를 체계화하여 관리하는 데이터의 집합 또는 해당 작업을 수행하는 응용 프로그램을 의미함.: 몽고디비는 NoSQL 데이터베이스. 그 중 도큐먼트 타입이다.: NoSQL 데이터베이스는 데이터 모델에 따라 키-밸류 , 컬럼, 도큐먼트 , 그래프 타입으로 분류할 수 있다.2. NoSQL 분류1) 키-밸류 타입 : 키를 기준으로 데이터를 조회하고 값으로 데이터를 저장한다.  ex) Redis, Amazon DynamoDB2) 도큐먼트 타입 : JSON과 유사한 형식의 객체를 담은 데이터를 저장함.ex) MongoDB , Couchbase , Firestore 3) 그래프 타입 : 노드를 사용하여 데이터를 저장하고, 에지를 사용해 데이터 관계를 저장한다.ex) ArangoDB , Amaz..

BackEnd Skils 2024.12.03

JavaScript에서 비동기 처리하기

1. 동기와 비동기: 동기 프로그래밍에서 작업은 차례로 실행되며 작업이 완료될 때까지 중단할 수 없음: 비동기는 임의의 순서로 또는 동시에 작업이 실행 될 수 있다.   2. JS에서 비동기처리하는 방법: 런타임에서 싱글 스레드로 동작한다.  그 말은 한 번에 하나의 작업만 처리할 수 있다는 뜻이다. : 그러나 프로미스 ,콜백 , Async Await 등의 방법을 사용하면 자바스크립트에서도 비동기 처리를 할 수 있다. 3. 콜백 : 함수의 파라미터로 함수를 전달하며, 비동기 처리가 끝났을 때 전달된 함수를 실행한다.: 가독성이 좋지 못하여 유지보수나 디버깅때 어려움이 있는 것이 특징이다. (콜백 지옥이라고도 함): 카페에가서 점원에게 커피를 주문 하고 다른 것을 하고 있으면, 커피 제조가 끝난 후에 손님..

백엔드 입문 (3) - npm 과 yarn 패키지

1. npm(node package manager): 자바스크립트용 패키지 매니저.: 유저가 만든 패키지를 등록하는 저장소를 의미하기도 하지만 CLI를 의미하기도 한다. : node.js를 설치할 때 함께 설치된다. 2. 패키지 매니저 : 프로젝트에 필요한 의존성 패키지를 관리하는 프로그램을 의미한다.: 의존성 패키지란 해당 프로젝트를 실행하는 데 꼭 필요한 라이브러리와 모듈을 의미한다. 3. 패키지와 모듈: Node.js에서 패키지는 package.json으로 정의한 파일 또는 디렉토리를 의미한다.: 패키지에는 package.json이 꼭 포함된다. : 결론적으로 package.json으로 정의한 코드 뭉치가 바로 패키지라고 할 수 있다.: 모듈은 node_modules 디렉토리 아래에 있는 파일 또는..

BackEnd Skils 2024.12.01