전체 글 112

[알고리즘_Node.js_재귀] 백준 11729번 하노이 탑 이동 순서

옮기려는 반원의 가장 아래숫자는 마지막(end-3)칸에 바로 옮기고 나머지 반원들은 가운데(mid-2)칸을 거쳐간다. 가장 아래 숫자가 마지막칸으로 바로 가는 이유는 1. 옮길 자리가 두칸밖에 없는데 다른 반원들 위에는 올라갈 수 없고 2. 마지막 맨아래 가야하기 때문에 우선순위가 생긴다. 위에는 이해를 했으나 재귀 호출 순서가 헷갈려서 그려본 결과 아래처럼 호출된다. num=2일때 1번으로 moveTop의 num=0 까지 호출돼서 전부 실행한 경우 2번의 push 로 돌아오고 다시 3번의 끝까지 전부 실행한다. const fs = require("fs"); const n = +fs.readFileSync("/dev/stdin").toString(); const answer = []; function m..

Algorithm/JS 2022.09.08

[알고리즘_Node.js_재귀] 백준 2447번 별 찍기 - 10

n은 3의 거듭제곱이며 가장 작은 별 1개가 모여서 만들어진다. n=3인 경우 n=1 별이 가로 3, 세로 3, 총 9개로 만들어지는데 빈칸의 좌표는 (1,1)이다. n=9인 경우 n=3 별이 가로 3, 세로 3, 총 9개로 만들어지는데 빈칸의 좌표는 (1,1)이다. n=27인 경우 n=9 별이 가로 3, 세로 3, 총 9개로 만들어지는데 빈칸의 좌표는 (1,1)이다. 빈칸의 절대좌표는 (1,1)으로 변함이 없기때문에 이 부분을 빈칸으로 한다. 최소 별 1칸까지 n을 나눈경우 별을 찍어준다. const fs = require("fs"); const n = +fs.readFileSync("/dev/stdin").toString(); let answer = ""; function recursion(x, y,..

Algorithm/JS 2022.09.06

[알고리즘_Node.js_브루트 포스] 백준 2798번 블랙잭

-오름차순으로 정렬한 후 제일 큰 숫자(배열 맨 끝)부터 조합해가며 m과 가까운 수가 나오는걸 찾기 const input = require("fs").readFileSync("/dev/stdin").toString().trim().split("\n"); const [n,m] = input[0].split(" ").map(Number); const arr = input[1].split(" ").map(Number); let result = 0; arr.sort((a,b) => a-b); for(let i=n-1; i>=2; i--){ for(let j=i-1; j>=1; j--){ for(let k=j-1; k>=0; k--){ let sum = arr[i] + arr[j] + arr[k]; if(m >=..

Algorithm/JS 2022.08.26

[알고리즘_Node.js_재귀] 백준 17478번 재귀함수가 뭔가요?

const input = require("fs").readFileSync("/dev/stdin").toString(); const n = Number(input); // 최초 1번 나오는 문장 console.log("어느 한 컴퓨터공학과 학생이 유명한 교수님을 찾아가 물었다."); function chatBot(line, n) { // n번만큼 공통 반복 문장 console.log(`${line}"재귀함수가 뭔가요?"`); if (n == 0) {// 재귀 마지막 도달시 나오는 문장 console.log(`${line}"재귀함수는 자기 자신을 호출하는 함수라네"`); console.log(`${line}라고 답변하였지.`);// n+1번 나오기때문에 마지막 도착점에서 한번 출력 return// 재귀로 돌..

Algorithm/JS 2022.08.25

[알고리즘_Node.js_재귀] 백준 10870번 피보나치 수 5

const fs = require("fs"); const input = fs.readFileSync("/dev/stdin").toString(); function fibonacci(input) { if (input == 0){ return 0; } else if(input == 1){ return 1; } for(let i=input; i>=2; i--){ return fibonacci(input-1)+fibonacci(input-2); } } console.log(fibonacci(input)); -다른분들의 풀이방법을 보고 더 간단하게 수정해서 푼 방법. const fs = require("fs"); const input = fs.readFileSync("/dev/stdin").toString(); ..

Algorithm/JS 2022.08.25

[CI/CD] Github Actions 사용해서 CI/CD 한번에 구축하기 (AWS EC2, Docker)

Spring Boot(gradle ver)프로젝트를 Gihub Actions를 사용하여 CI와 Docker, AWS EC2로 CD까지 해봤습니다. https://zzang9ha.tistory.com/404 위 링크를 따라서 진행하면서 제 환경에서 맞도록 설정해서 진행했습니다. 1. EC2 인스턴스 생성 -이름, OS, 키페어, 보안그룹을 설정해줍니다. 2. EC2 인스턴스 SSH 클라이언트 연결 -키페어 파일이 있는곳에서 터미널을 열고 아래 예를 복붙해서 넣어줍니다. 예) 'ssh -i "testuser.pem" ec2-user@ec2-15-111-11-111.ap-northeast-2.compute.amazonaws.com' 3. EC2 SSH에서 사용자 생성 및 권한 [ec2-user@ip-172-3..

DevOps 2022.08.15

[AWS] RDS MySQL 인스턴스 EC2 연결하고 로컬 MySQL Workbench에서 접속하기

아래방법대로 했었을때 로컬에서 DB연결해서 사용가능했었는데 기억을 되짚으면서 작성하는 포스팅이라 나중에 다시 따라해보고 안되는 부분들은 수정할 예정입니다. 0. EC2 사용 보안그룹에 MySQL (3306) 추가 아래에서 언급한 부분만 설정하고 나머지는 기본으로 진행했습니다. 1. MySQL, 프리티어 사용 2. 설정 식별자 : 개인 설정 db 이름 사용자이름, 암호 : 나중에 연결할때 중요하므로 다른곳에 메모 해둘 것 3. 연결 VPC와 서브넷 그룹은 만들어둔 EC2 인스턴스와 동일하게 4. 생성 5. 파라미터 그룹 편집 (uft8이나 타임존 설정 등) https://developer111.tistory.com/52 여기서 보고 설정했습니다 6. 만든 데이터 베이스 클릭 후 엔드포인트 확인 7. MyS..

DevOps/AWS 2022.08.11

[Docker] 도커 이미지 만들어서 Docker Hub에 push하기

실습환경 : macOS Monterey 12.5 프로젝트 : Node.js (NestJS) IDE : Visual Studio Code (*VSCode에 확장프로그램으로 Docker를 설치해놨습니다) 1. 프로젝트에 Dockerfile을 만듭니다. 2. 파일을 작성하고 마우스 우클릭으로 'Build Image'를 누릅니다. 3. 상단에 이름을 정해주고 엔터를 칩니다. (Docker Hub 계정아이디)/컨테이너이름:태그 이름을 정할때는 아래 링크에서 설명해준대로 작성해야합니다. 다르게 했다가 처음에 아이디를 포함하지않고 작성했더니 push가 안됐습니다. https://github.com/sangyeol-kim/ausg-docker-seminar/issues/10 4. 터미널에 명령어를 쳐서 push를 합니..

DevOps/Docker 2022.08.07

[회고] 원티드 프리온보딩 백엔드 코스 3,4,5주차를 마치고~

3주차 기업과제 게임회사의 기업과제였어서 게임관련 API를 만들었다. 보스몹을 잡기위해서 한명의 유저만 방에 입장할 수 있고 제한시간이 정해져있다. 그리고 게임을 마칠때마다 진행한 난이도만큼의 포인트를 획득하고 누적 포인트대로 랭킹이 매겨진다. 나는 이번 과제에서 랭킹구현 파트를 맡았고 Redis를 사용해서 구현해보게 되었다. 레디스가 데이터베이스 위에서 캐싱을 해주는 역할로 랭킹조회시 계속 db에 접근하지 않고 빠르게 조회가 가능한걸로 알아서 사용해봤다. Soted Set 자료구조를 사용해서 보스레이드 게임이 종료될때마다 유저아이디와 누적점수를 저장('zadd')하고 랭킹 조회시 누적점수가 높은순으로 1위부터 10위까지 조회('zrevrange')할 수 있도록 했다. 저장부터 조회까지 엄청 간편하게 구..

Etc/회고 2022.07.27

[회고] 원티드 프리온보딩 백엔드 코스 1,2주차를 마치고~

지원과정 국비를 마치고 백엔드로 취업하고자 결심했지만 막상 채용공고 사이트를 보면 ORM이라던지 TDD라던지 CI/CD 등 아직 안해본것들이 너무 많았다. 이대로 원서를 넣는다고 해도 뽑힐 가능성이 매우 낮다고 생각했고 프로젝트를 더 해보고 싶었어서 이것저것 방법을 찾다가 마침 원티드에서 프리온보딩이라고 기업과제를 받아서 프로젝트를 진행할 수 있는 과정을 연다고 해서 참가하게 되었다. 백엔드는 자바&스프링으로 해왔었는데 이 코스에서는 장고나 노드로만 참가가 가능했어서 스프링이랑 비슷한 노드에 NestJS프레임워크가 있다고 해서 이번기회에 노드를 공부해보기로 했다. 사전과제 사전과제는 간단한 CRUD가 가능한 REST API를 구현하는 것이였다. 스프링이랑 비슷한 구조였어서 모듈마다 컨트롤러랑 서비스를 만..

Etc/회고 2022.07.11