한 마을에 모험가가 N명 있습니다. 모험가 길드에서는 N명의 모험가를 대상으로 '공포도'를 측정했는데, '공포도'가 높은 모험가는 쉽게 공포를 느껴 위험 상황에서 제대로 대처할 능력이 떨어집니다. 모험가 길드장인 동빈이는 모험가 그룹을 안전하게 구성하고자 공포도가 X인 모험가는 반드시 X명 이상으로 구성한 모험가 그룹에 참여해야 여행을 떠날 수 있도록 규정했습니다. 동빈이는 최대 몇개의 모험가 그룹을 만들 수 있는지 궁금합니다. 동빈이를 위해 N명의 모험가에 대한 정보가 주어졌을 때, 여행을 떠날 수 있는 그룹 수의 최댓갑슬 구하는 프로그램을 작성하세요. 예를 들어 N = 5이고, 각 모험가의 공포도가 다음과 같다고 가정합시다. 2 3 1 2 2 이 때, 그룹 1에 공포도가 1, 2, 3인 모험가를 한 ..
분류 전체보기
N개의 공의 무게가 각각 주어질 때, 두 사람이 볼링공을 고르는 경우의 수를 구하는 프로그램을 작성하세요. (같은 무게의 공이 여러 개 있을 수 있지만, 서로 다른 공으로 간주 ) 📌 입력 조건 첫째 줄에 볼링공의 개수 N, 공의 최대 무게 M이 공백으로 구분되어 각각 자연수 형태로 주어집니다. (1
N개의 동전이 주어졌을 때 만들 수 없는 양의 정수 금액 중 최솟값을 구하는 프로그램을 작성하세요. 📌 입력 조건 첫째 줄에는 동전의 개수를 나타내는 양의 정수 N이 주어집니다. (1
Node.js 교과서 책을 읽고 학습 내용을 정리한 포스팅입니다. 문제 시 삭제하겠습니다. 미들웨어? 미들웨어는 express의 핵심인데 요청과 응답 중간에 위치하여 미들웨어라 합니다. 이 미들웨어를 사용하여 요청과 응답을 조작하고 기능을 추가하기도 하며, 나쁜 요청을 걸러낼 수 있습니다. 미들웨어 사용법 미들웨어는 app.use와 함께 사용합니다. // 모든 요청에서 미들웨어 실행 app.use(미들웨어) // abc로 시작하는 요청에서 미들웨어 실행 app.use('/abc', 미들웨어) // abc로 시작하는 POST 요청에서 미들웨어 실행 app.post('/abc', 미들웨어) next 미들웨어는 위에서 부터 아래로 실행되는데 next를 실행하여 다음 미들웨어로 넘어갑니다. app.use((re..
- Auth 기능 만들기 회원 인증을 하기 위해 사용 쿠키에 저장 된 토큰을 서버에서 가져오고 복호화한다. 복호화 후 userId가 나오는데 이것을 이용하여 DB에서 유저를 찾은 후 쿠키에서 받아온 토큰이 유저를 가지고 있는지 확인 // auth 미들웨어 app.get('/api/users/auth', auth, (req, res) => {}) middleware 폴더안에 auth.js 파일 생성 const { User } = require('../models/User'); let auth = (req, res, next) => { // 인증 처리를 하는 곳 // 클라이언트 쿠키에서 토큰을 가져온다. let token = req.cookies.x_auth; // 토큰을 복호화 한 후 유저를 찾는다. Us..
노드를 사용한 포트폴리오를 만들려고 인프런에서 강의를 찾아보다가 무료로 학습이 가능한 컨텐츠가 있길래 한번 들어보자 하고 들어봤는데 괜찮은 것 같아서 끝까지 완강하였다. 첫번째 학습은 따라하느라 정신없어서 내용 이해가 잘 안됐지만 두번째 학습부턴 노트에 필기하며 최대한 이해하려고 노력했다. 이 곳에다 학습한 내용을 정리하려고 한다. 1 ) Node.js를 다운 받는다. - 터미널에서 npm init을 입력하고 package.json을 생성한다. 2 ) express.js를 다운 받는다. - npm i express --save 3 ) 몽고DB에 연결한다. - Mongoose는 간단하게 MongoDB를 편하게 쓸 수 있는 tool이다. const mongoose = require('mongoose'); m..
1. 3 중첩 스코프 스코프는 확인자 이름으로 변수를 찾기 위한 규칙의 집합이다. 그러나 대개 고려해야 할 스코프는 여러 개이다. 하나의 블록이나 함수는 다른 블록이나 함수 안에 중첩 될 수 있으므로 스코프도 다른 스코프안에 중첩 될 수 있다. 따라서 대상 변수를 현재 스코프에서 찾지못하면 엔진은 바깥의 스코프로 넘어가서 변수를 찾거나 글로벌 스코프를 참조한다. 1. 4 오류 LHS와 RHS 두 검색 방식은 변수가 아직 선언되지 않았을 때 서로 다르게 동작한다. RHS 검색이 중첩 스코프 안 어디에서도 변수를 찾지 못하면 엔진이 'ReferenceError'를 발생시킨다. RHS 검색 결과 변수를 찾았지만 그 값을 가지고 불가능한 일을 했을 때, 함수가 아닌 값을 함수처럼 실행하거나 null이나 unde..
1. 2 스코프 이해하기 엔진 : 컴파일레이션의 시작부터 끝까지 전 과정과 자바스크립트 프로그램 실행을 책임진다. 컴파일러 : 엔진의 친구, 파싱과 코드 생성의 모든 잡일을 맡는다. 스코프 : 선언된 모든 확인자 검색 목록을 작성하고 유지한다. 엄격한 규칙을 강제하여 현재 실행 코드에서 확인자의 적용방식을 정한다. 1. 2. 2앞과 뒤 "var a = 2;" 엔진은 하나의 구문을 두 개의 서로 다른 구문으로 본다. 하나는 컴파일러가 컴파일레이션 과정에서 처리할 구문이고, 다른 하나는 실행 과정에서 엔진이 처리할 구문이다. 컴파일러의 첫 번째 일은 렉싱을 통해 구문을 토큰으로 쪼갠다. 그 후 토큰을 파싱해 트리 구조로 만든다. 코드 생성 과정에 들어가면 컴파일러는 다음처럼 프로그램을 처리한다. 1. 컴파일..