728x90
반응형

전체 글 230

[Javascript] 예산

문제 설명 S사에서는 각 부서에 필요한 물품을 지원해 주기 위해 부서별로 물품을 구매하는데 필요한 금액을 조사했습니다. 그러나, 전체 예산이 정해져 있기 때문에 모든 부서의 물품을 구매해 줄 수는 없습니다. 그래서 최대한 많은 부서의 물품을 구매해 줄 수 있도록 하려고 합니다. 물품을 구매해 줄 때는 각 부서가 신청한 금액만큼을 모두 지원해 줘야 합니다. 예를 들어 1,000원을 신청한 부서에는 정확히 1,000원을 지원해야 하며, 1,000원보다 적은 금액을 지원해 줄 수는 없습니다. 부서별로 신청한 금액이 들어있는 배열 d와 예산 budget이 매개변수로 주어질 때, 최대 몇 개의 부서에 물품을 지원할 수 있는지 return 하도록 solution 함수를 완성해주세요. 제한사항 ) d는 부서별로 신청..

CS/알고리즘 2022.02.19

[Javascript] 3진법 뒤집기

문제 설명 자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요. 제한 사항 ) n은 1 이상 100,000,000 이하인 자연수입니다. 입출력 예 ) n result 45 7 125 229 정답 코드 /** * * @param n: 매개변수 * @returns {number} */ function solution(n) { const num = n.toString(3); const result = num.split('').reverse().join(''); return parseInt(result,3); } toString( ) 문법(Syntax) : number.toString(radix);..

CS/알고리즘 2022.02.01

[Javascript] 약수의 개수 덧셈

문제 설명 두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요. 제한 사항) 1 ≤ left ≤ right ≤ 1,000 입출력 예 ) left right result 13 17 43 24 27 52 정답 코드 /** * * @param left: 시작 * @param right: 마지막 * @returns {number} * 약수의 개수: 짝수 -> + , 홀수 -> - */ function solution(left, right) { return divisor(number(left,right)); } function numbe..

CS/알고리즘 2022.02.01

[Javascript] 실패율

문제 설명 슈퍼 게임 개발자 오렐리는 큰 고민에 빠졌다. 그녀가 만든 프랜즈 오천성이 대성공을 거뒀지만, 요즘 신규 사용자의 수가 급감한 것이다. 원인은 신규 사용자와 기존 사용자 사이에 스테이지 차이가 너무 큰 것이 문제였다. 이 문제를 어떻게 할까 고민 한 그녀는 동적으로 게임 시간을 늘려서 난이도를 조절하기로 했다. 역시 슈퍼 개발자라 대부분의 로직은 쉽게 구현했지만, 실패율을 구하는 부분에서 위기에 빠지고 말았다. 오렐리를 위해 실패율을 구하는 코드를 완성하라. 실패율은 다음과 같이 정의한다. 스테이지에 도달했으나 아직 클리어하지 못한 플레이어의 수 / 스테이지에 도달한 플레이어 전체 스테이지의 개수 N, 게임을 이용하는 사용자가 현재 멈춰있는 스테이지의 번호가 담긴 배열 stages가 매개변수로..

CS/알고리즘 2022.01.17

[JavaScript] filter ( )

자바스크립트의 filter 함수는 조건을 주고 해당 조건이 참인 요소를 모아 새로운 배열을 만들어 반환하는 함수이다. ** 새로운 배열을 만들지만 중복값을 제거해주지는 않기 때문에 배열 요소가 중복될 수 있다. 기본 구문 arr.filter(callback(element[, index[, array]])[, thisArg]) callback : 각 요소에 대한 조건값 element : 처리할 현재 요소 index : 현재 인덱스 array : filter를 호출한 배열 thisArg : callback을 생성할 때 this로 사용하는 값 특징 값이 존재하는 인덱스에 대해서만 호출이 된다. 삭제 또는 값이 없는 배열은 filter 함수가 실행되지 않는다. 기존 배열의 값을 변경하지 않는다. 처리되는 범위는..

[NodeJS] DB 접근 ( Side Project - 스터디 사라져서 중단... )

이전 포스팅에서는 MySQL ConnectionPool을 만드는 부분까지 진행했습니다. 이번 글에서는 직접 DB에 접근하여 저장된 값을 가져오는 방식을 해보려고합니다. 저는 각각의 역할을 수행하도록 디렉토리 구조를 나눠서 사용하였습니다. 1. routes -> Controller의 역할을 수행 2. services -> service 로직을 수행 3. db -> 설정한 connectionPool 객체를 반환해주는 DB 설정 관련 이러한 구조로 구분하였습니다. routes 프론트에서 요청을 할때 /api/~~를 통하여 백엔드에 요청을 하게 됩니다. 따라서 /api 라는 요청이 들어오면 app.ts에서 api.ts로 접근을 하도록 하였습니다. app.ts import api from "../routes/ap..

[NodeJS] MySQL 연결 ( Side Project - 스터디 사라져서 중단... )

이전 포스팅에서 express 프로젝트 생성과 server 연결까지 진행했습니다. 이번에는 데이터베이스를 연결하는 작업을 진행하도록 하겠습니다. 작업을 하기전에 필요한 모듈이 있습니다. npm i dotenv mysql2 dotenv는 사용자 정보를 담을 .env파일을 사용하기 위한 모듈입니다. 정보를 깃에 올리지 않기 위한 파일이니 다운받아주세요. 또한 mysql을 사용하지 않고 mysql2를 사용합니다. mysql은 콜백 기반이기 때문에 promise를 사용하지 못하고 npm에 있는 promise-mysql 모듈을 따로 설치해서 사용해야 합니다. 하지만 mysql2는 promise를 지원하기 때문에 다른 모듈을 설치하지 않고 사용이 가능합니다. * mysql을 사용하게 되면 async/await를 사..

[NodeJS] express 프로젝트 생성 ( Side Project - 스터디 사라져서 중단... )

프로젝트를 진행하면서 react와 javascript를 공부해 나가는 스터디에 나가게 되었습니다. 그러면서 프로젝트 주제를 정하게 되었고 커뮤니티 웹앱을 만들게 되었습니다. 그러다 보니 백엔드를 맡을 사람이 필요하게 되었는데 express를 좀 더 공부해보자는 제가 맡게 되었습니다. 물론 프론트쪽의 작업도 몇개 주어지긴 했지만 일단은 주는 백엔드이다보니 작업을 하면서 정리를 해보려고 합니다. express 프로젝트 생성 터미널에서 해당 명령어를 입력하면 프로젝트가 생성됩니다. express --view=ejs 프로젝트명 ** --view=템플릿 -> 이부분은 생략 가능합니다. 저는 프론트를 react로 진행하기 때문에 선언을 하지않고 바로 프로젝트를 생성하였습니다. express 환경에서 typescri..

[Node.JS] MySQL 모듈화

지난 번의 MongoDB 모듈화 방식과 동일한 방식으로 진행하였다. 다만, 차이점은 사용하는 MySQL 모듈이 다르다는 점이다. 모듈화를 진행시키기 위해 찾아보는 예제 코드들은 대부분 import mysql from "mysql"; 모듈을 사용하였는데....내가 하려는 방법과 맞지 않았다. 아직 공부하는 단계라 해결하는데 원인을 몰랐기에..이틀은 고생한거같다. 막상 이유를 알고보니 너무 단순한 문제... 일단 사용한 코드는 이와 같다. import { createPool, Pool } from "mysql2/promise"; import dotenv from "dotenv"; dotenv.config(); export namespace DB { export const config = { user: pro..

[Node.JS] ConnectionPool

기존에 사용했던 방법은 DB에 접근할 때마다 connection 객체를 생성하여 값을 조회하는 방식으로 진행하였다. 하지만 이렇게 되면 매번 새로운 객체가 생성됨으로 속도가 저하될 수도 있다. 그렇기 때문에 미리 connectionPool을 준비해줌으로써 새로 객체를 생성하지 않고 준비된 pool을 이용하여 DB에 접근할 수 있다. 사용된 코드는 아래와 같다. db.ts import { MongoClient } from "mongodb"; export namespace DB { //DB export const NAME: string = 'DATA'; //COLLECTION export enum COLLECTIONS { ToDo = 'ToDo', Board = 'Board', } export class M..

728x90
반응형