반응형

전체 글 29

백준 12865 평범한 배낭 (배낭 문제)

이 문제는 유명한 DP문제 중 하나로 0-1 knapsack problem입니다. 배낭에 무게 제한을 넘지 않으면서 내용물의 가치의 합이 최대가 되는 물건들의 부분집합을 구하는 문제입니다. 물건을 쪼갤 수는 없습니다. 모든 부분집합을 구하는 경우는 $O(2^n)$의 시간이 걸리기 때문에 시간초과가 나게 됩니다. 점화식 배낭 문제에서 dp의 점화식은 다음과 같습니다. dp배열에서 x축은 물건의 인덱스 번호, y축은 자연수인 무게 값이 들어가게 됩니다. 기본적인 아이디어는 i 번째 물건을 집어 넣는 경우와 넣지 않는 경우 중에서 큰 값을 dp테이블에 저장하는 것입니다. 예제를 살펴보겠습니다. 가방의 무게 제한은 7이고 물건의 무게와 가치가 다음과 같이 주어졌습니다. 6 13 4 8 3 6 5 12 첫 번째 ..

PS/BOJ 백준 2023.08.25

Svelte란? Sveltekit 1.0 간단하게 알아보기

SvelteKit이란? SvelteKit은 Svelte를 사용하여 웹 애플리케이션을 구축하기 위한 프레임워크입니다. SvelteKit을 사용하면 서버 측 렌더링, 라우팅 및 API 호출을 쉽게 처리할 수 있으며 Node.js, Deno 및 Lambda와 같은 다양한 백엔드와 함께 사용할 수 있습니다. 다양한 환경에 배포할 수 있는 확장 가능한 고성능 웹 애플리케이션을 쉽게 구축할 수 있도록 설계되었습니다. 쉽게 생각하면 React의 Nextjs나 Vue의 Nuxtjs 같은거라고 생각하면 됩니다. 작년 12월 15일에 나온 따끈따끈한 프레임워크입니다. Svelte는 프론트엔드 프레임워크 중에서 사람들이 가장 많이 관심을 가지고 있는 것이기도 합니다. 위 그림을 보면 4년째 1위를 차지하고 있네요. Svel..

Svelte 2023.01.18

Nextjs MongoDB Atlas 연결하기 mongoose, TypeScript 사용

MongoDB Atlas란? 우선 MongoDB는 NoSQL 데이터베이스입니다. 간단히 말하면 MySQL같은 데이터베이스랑은 달리 테이블을 만들고 정규화 시키고 할 필요 없이 그냥 저장하고 싶은대로 저장할 수 있습니다. MongoDB Atlas는 MongoDB 클라우드 서비스입니다. 무료로 5GB까지 사용 가능하다고 합니다. Docker로 데이터베이스 올리고 앱 실행하고 그러기 귀찮아서 냅다 가입하고 써보려고 합니다. 몽고DB 아틀라스 공식페이지는 다음 주소로 가시면 됩니다. https://www.mongodb.com/ko-kr/atlas/database MongoDB Atlas Database | Multi-Cloud Database Service 멀티 클라우드 데이터베이스 서비스는 애플리케이션 데이터..

Nextjs 2023.01.16

EC2 CodeDeploy Agent 설치 Ruby version 2.x needs to be installed.

EC2에 CodeDeploy Agent 설치해보자 EC2에 CodeDeploy로 배포 자동화를 만들기 위해 Ubuntu 22.04.1 LTS 환경에 CodeDeply Agent를 설치했습니다. https://docs.aws.amazon.com/ko_kr/codedeploy/latest/userguide/codedeploy-agent-operations-install-ubuntu.html Ubuntu Server용 CodeDeploy 에이전트 설치 - AWS CodeDeploy 출력을 임시 로그 파일에 쓰는 것은 Ubuntu 20.04에서 install 스크립트를 사용하여 알려진 버그를 해결하는 동안 사용해야 하는 해결 방법입니다. docs.aws.amazon.com 공식 홈페이지에 나와 있는 방법을 사용..

AWS 2023.01.10

Windows 11 gyp ERR! find VS - missing any Windows SDK

Windows에서 작업해보자 맥북으로 작업하던 Vuejs프로젝트를 windows에서 하려고 git clone을 받고 의존성 설치를 하려고 했습니다. 그런데 gyp 에러가 발생했습니다. pnpm install │ gyp verb build dir "build" dir needed to be created? Yes │ gyp verb find VS msvs_version was set from command line or npm config │ gyp verb find VS - looking for Visual Studio version 2022 │ gyp verb find VS VCINSTALLDIR not set, not running in VS Command Prompt │ gyp verb find V..

카테고리 없음 2022.12.20

GCP ec2-micro Jenkins yarn build 멈춤 (AWS EC2 t2.micro도 동일)

Yarn build를 해보자 젠킨스 설치가 끝나고 CD설정을 위해 Nodejs플러그인부터 설치를 해주었습니다. 플러그인을 설치하고 재시작 해준 다음 Global Tool Configuration에 가서 플러그인 설정을 해줍니다. NodeJS항목 가서 이름 적당히 짓고 NodeJS 버전을 선택해줍니다. (2022.12.15.기준 18.12.1LTS) 그리고 yarn을 쓸 것이기 때문에 yarn도 추가해줍니다. 그다음 새로운 파이프라인 프로젝트를 생성해서 깃이랑 연결해줍니다. Project url에 깃허브 레포 주소 입력해주고 아래 빌드 트리거에 깃허브 훅 트리거에 체크해줍니다. Pipeline script from SCM을 선택하고 레포지토리 URL에는 깃허브 레포 HTTPS URL .git으로 끝나는 주..

GCP 2022.12.15

Google Cloud Platform VM 인스턴스에 jenkins 설치하기 삽질(도커엔딩)

구글 클라우드 플랫폼에 젠킨스를 올려보자! 구글 클라우드 플랫폼에 VM인스턴스 평생 무료 옵션이 있길래 냉큼 가입해서 24시간 돌아가는거니까 Jenkins 서버로 써보자! 라고 생각을 하고 e2-micro 사양의 컴퓨팅 서버에 젠킨스 설치를 시도해 보았습니다. 우분투(Ubuntu 18.04.6 LTS) 로 시작했고 vCPU 2개와 1GB 메모리 30GB의 스토리지의 사양으로 되어있습니다. 젠킨스 공식 홈페이지에서 최소 사양을 확인해봤을때 충분히 가능해보여서 바로 설치 시작했습니다. 공식 홈페이지에 쓰여있는대로 젠킨스 LTS 설치 스크립트 복붙을 했습니다. Jenkins 구동에는 자바가 필요하므로 자바 11도 설치했습니다. sudo apt update sudo apt install openjdk-11-jr..

GCP 2022.12.13

[Project] Online Judge Platform

1. 개요 Team Maple Leaf에서 토이 프로젝트로 온라인 저지 플랫폼을 만들어 보았습니다. 총 인원은 5명입니다. http://www.maple-leaf.dev 2. 개발기간 2022.09.19. ~ 2022.11.30. 약 2.5개월 동안 진행된 프로젝트입니다. 실제 개발 기간은 2022.11.23.까지였고 2022.11.30.까지는 QA및 정리 기간이었습니다. 3. 계획 1) 역할분담 프론트엔드 3명 백엔드 2명 채점서버 2명 저는 프론트엔드, 채점서버 개발을 담당했습니다. 2) 기술 프론트엔드 Vue3 + TypeScript 백엔드 Springboot + MySQL + Redis 채점서버 Rust + RabbitMQ 3) 서버 설정 계획 처음에 계획한 서버 설정입니다. 초반애 채점기능은 다..

TEAM Maple Leaf 2022.12.01

Rust로 online-judge 서버 만들어보기 [1]

개요 러스트로 C언어 코드를 받아서 컴파일하고 테스트케이스를 돌려서 성공인지 실패인지 결과를 반환하는 프로그램을 만드는 것이 목표입니다. 프로그램은 도커 컨테이너에서 실행될 것이고, 백엔드랑은 http 통신을 합니다. 우선 이번에는 c파일을 컴파일해서 정답과 비교하는거 까지 만들어보았습니다. 이번에 진행한 내용 .예시로 만든 프로그램은 문자열을 입력받아 거꾸로 출력하는 프로그램입니다. #include int main(int argc, char **argv) { char str[100]; int i = 0, j; scanf("%s", str); while(str[i] != '\0') i++; for(j = i - 1; j >= 0; j--) { printf("%c", str[j]); } printf("\n..

Rust 2022.10.26

Rust 반복문 loop, while, for로 작성해보기

러스트의 반복문 러스트에는 loop, while, for 세 종류의 반복문이 있습니다. 우선 loop 부터 살펴봅시다. loop loop 키워드는 C언어의 while(1)과 같이 동작합니다. 브레이크 포인트가 loop 블록을 무한 반복합니다. fn main() { loop { println!("loop!"); } } 위 코드를 종료하려면 ctri + c로 강제 종료해야 합니다. Rust에서는 break 키워드로 반복문을 탈출 할 수 있습니다. 또한 break 뒤에 반환하고자 하는 값을 넣으면 결과를 반환할 수도 있습니다. 예시로 loop를 사용해 피보나치 수를 구하는 프로그램을 만들어봅시다. fn main() { let mut fib = 0; let mut prev = 0; let mut curr = 1..

Rust 2022.10.24
반응형