본문 바로가기
728x90
반응형

분류 전체보기647

[Node.js] [MongoDB] 게시물에 번호달기(.updateOne) 게시물마다 번호를 달면 게시물들을 관리하기 좋다. 게시물 개수를 세기 위해서 DB에 'counter'라는 콜렉션을 하나 더 생성한 다음, {name: 게시물개수 totalPost: 0}를 작성해서 insert 해주었다. 이제 글을 작성할 때마다 'count' 콜렉션의 name:게시물개수인 요소의 tatalPost 값을 1 증가시켜주면 된다. app.post('/add', function (req, res) { res.send('전송완료') //console.log(req.body.title) db.collection('counter').findOne({'name' : '게시물개수'},function(에러,결과){ //name이 게시물개수인 데이터를 찾음(카운터 사용) var 게시물개수 = 결과.total.. 2023. 2. 16.
[자바] 백준 14501번: 퇴사 https://www.acmicpc.net/problem/14501 14501번: 퇴사 첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다. www.acmicpc.net 퇴사하기 전까지 얼마나 벌 수 있는지 계산하는 문제. 다이나믹 프로그래밍 dp로 풀 수 있다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class P14501 { public static void main(String[] args) throws NumberFormatException, IOException { BufferedReader b.. 2023. 2. 15.
[자바] 백준 11723번: 집합 https://www.acmicpc.net/problem/11723 11723번: 집합 첫째 줄에 수행해야 하는 연산의 수 M (1 ≤ M ≤ 3,000,000)이 주어진다. 둘째 줄부터 M개의 줄에 수행해야 하는 연산이 한 줄에 하나씩 주어진다. www.acmicpc.net 자바 HashSet을 그대로 사용해서 풀었다. 출력이 많기 때문에 bufferedwriter를 사용해야 시간초과가 나지 않는다. import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java... 2023. 2. 14.
[Node.js] DB에서 데이터를 가져와 사용하기 DB에 저장한 데이터를 꺼내와 사용해보자. 앞서서... DB에 데이터를 저장했었다 const express = require('express'); const app = express(); const bodyParser = require('body-parser'); app.use(bodyParser.urlencoded({ extended: true })); . . . app.post('/add', function (req, res) { res.send('전송완료') //console.log(req.body.title) db.collection('post').insertOne({'title':req.body.title,'date':req.body.date},function(에러,결과){ console.log.. 2023. 2. 14.
[Node.js] POST요청/ form 데이터 서버로 전송하기 이러한 write페이지를 미리 만들어 두었다. 오늘의 할 일 Due date 저장하기 form태그에 action='/add' method='POST' 을 설정하였다 그럼 폼 전송버튼을 누를 시 /add 경로로 POST요청을 하게 된다. (각 input에는 name도 붙여 주었음) 다시 서버로 돌아와서, const bodyParser = require('body-parser'); app.use(bodyParser.urlencoded({extended:true})); 데이터 처리를 쉽게하기위해 body-parser 라이브러리를 사용한다. 그래서 맨 위에 이 코드를 추가해주고, app.post('/add',function(req,res){ res.send('전송완료') console.log(req.body) .. 2023. 2. 13.
[Node.js] nodemon 사용하기 매번 이렇게 node 파일명으로 서버를 실행하고, ctrl+c로 끄고.. 하는것이 귀찮다 nodemon을 사용해 보자. npm install -g nodemon 을 입력해서 설치 해 주고 nodemon 파일명.js 를 입력하면... 오류가 뜬다. 이를 해결하기 위해서 windows powershell을 관리자권한으로 실행시킨 다음, executionpolicy를 쳐 보면 Restricted 라고 나오는데, set-executionpolicy unrestricted 를 입력해서 unrestricted로 변경해주면 된다. 그러고 나서, 다시 nodemon 파일명.js 를 입력하게되면? 잘 실행 된다. 이제 파일이 변경되면 자동으로 서버가 재가동된다. 2023. 2. 13.
[Node.js] GET 요청 처리하기 / GET 요청시 HTML파일 보내는 법 앞선 시간에 Node.js를 설치하고 express라이브러리도 설치하였다. ... 서버를 띄우기 위해 작성한 기본 템플릿. const express = require('express'); const app = express(); app.listen(8080,function(){ console.log('listening on 8080') }); (express 라이브러리 사용법에 따름) express라이브러리 첨부 및 사용, app.listen()으로 원하는 포트에 서버를 오픈하였다. (app.listen(오픈할 포트번호, function(){오픈시 실행할 코드});) const express = require('express'); const app = express(); app.listen(8080,fu.. 2023. 2. 13.
서버란 무엇인가? 서버란 무엇인가? '클라이언트의 요청을 받으면 서비스, 데이터를 제공하는 컴퓨터 혹은 프로그램' == 요청을 받으면 데이터를 보내주는 기계. (이모 여기 사이다 한병이요~ 요청하면 이모가 사이다를 한 병 갖다주는데 여기서 이모 역할.) 서버에는 아래 4가지를 요청할 수 있다. 1. 읽기(GET) 2. 쓰기(POST) 3. 수정(PUT) 4. 삭제(DELETE) GET을 한번 살펴보자. 웹페이지를 읽을 때 GET 요청을 사용한다. (유튜브 홈을 보고싶다고 유튜브 서버에 GET요청) GET요청을 하는 가장 쉬운 방법은 브라우저 주소창에 URL을 입력하는 것이다 (브라우저의 URL 입력란이 GET요청하는 곳이었음 ㅎㄷㄷ) 그래서... 서버는 어떻게 만드는데? 누가 youtube.com으로 접속하면 메인페이지H.. 2023. 2. 12.
[자바] 백준 2407번: 조합 https://www.acmicpc.net/problem/2407 2407번: 조합 n과 m이 주어진다. (5 ≤ n ≤ 100, 5 ≤ m ≤ 100, m ≤ n) www.acmicpc.net nCr=n-1Cr-1 + n-1Cr nCn=nC0=1 이 두 공식을 이용해서 풀었다. 재귀함수만 이용하게되면 너무 오래걸리거나 스택오버플로우가 날 수 있어서 이차원배열을 하나 만들어 둔 다음 한번 계산한 값은 배열에 저장해두고, 나중에 같은 값을 써야할 때 배열에서 바로 꺼내쓸 수 있도록 하였다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.math.BigInteger; .. 2023. 2. 12.
[자바] 백준 Contest 참가 https://www.acmicpc.net/contest/view/952 2023 KSA Automata Winter Contest www.acmicpc.net 백준을 이용하면서 처음으로 참가해본 콘테스트 결과는 아주 처참. A번 https://www.acmicpc.net/contest/problem/952/1 A번: 소수가 아닌 수 이 대회의 운영진 중 한 명인 KSA 학생은 $17$시와 $19$시를 구별할 수 없다. 이는 당연하게도 $17$과 $19$가 모두 소수이기 때문일 것이다. 시간을 제대로 구별해서 KSA의 명예를 지키기 위해 정수 $N$ www.acmicpc.net 소수가 아닌 수라고 해서 소수를 판별해서 해야하나 아주 심오하게 풀었는데... 소수가 아닌 수 아무거나 출력하면 되는 것이기 때.. 2023. 2. 12.
[자바] 백준 14500번: 테트로미노 https://www.acmicpc.net/problem/14500 14500번: 테트로미노 폴리오미노란 크기가 1×1인 정사각형을 여러 개 이어서 붙인 도형이며, 다음과 같은 조건을 만족해야 한다. 정사각형은 서로 겹치면 안 된다. 도형은 모두 연결되어 있어야 한다. 정사각형의 변 www.acmicpc.net 회전, 대칭까지 생각하면 폴리오미노가 총 19가지가 생기는데 이 모든것을 일일이 적어서 하기에는 너무 힘들것같았다. 문제에서 가능한 폴리오미노가 5종류 있다고 해서 이 5종류를 어떻게 손봐야할까...생각하던 찰나 그냥 폴리오미노에 대한 조건을 가지고 백트래킹을 하면 될 것 같았다. 백트래킹으로 풀고 나서 확인해보니 값이 틀렸다. 왜 틀렸는지 visited를 출력해서 보니 "ㅗ"모양을 만들 수가 없.. 2023. 2. 10.
[자바] 백준 14499번: 주사위 굴리기 https://www.acmicpc.net/problem/14499 14499번: 주사위 굴리기 첫째 줄에 지도의 세로 크기 N, 가로 크기 M (1 ≤ N, M ≤ 20), 주사위를 놓은 곳의 좌표 x, y(0 ≤ x ≤ N-1, 0 ≤ y ≤ M-1), 그리고 명령의 개수 K (1 ≤ K ≤ 1,000)가 주어진다. 둘째 줄부터 N개의 줄에 지 www.acmicpc.net 어떠한 규칙이 있나? 찾아보려다가 주사위를 굴릴 때마다 주사위의 동서남북위아래가 어떻게 변하는지를 다 적어봤다. 그냥 하나하나 다 구현해놓는게 빠를것 같아서 주사위 class를 하나 만들고, 주사위 객체를 만들어 동서남북위아래에 적힌 숫자를 관리하는것이 좋을것 같았다. import java.io.BufferedReader; impo.. 2023. 2. 9.
OpenAI API를 이용하여 채팅 웹페이지를 만들다 이렇게 AI와 대화를 할 수 있다. openAI API를 사용해서 채팅 웹을 만드는 방법은 이 영상을 참고했다. 아직 제대로 공부하지 못해서 잘은 모르지만 따라 만들기에 너무 재밌을 것 같아서 만들어 봤다. 기본적으로 openAI 사용하는 방법은 영상을 따라했고 내가 할줄아는 HTML CSS JS로 채팅화면 꾸미기를 조금 해봤다. 아이폰 메세지 앱을 참고해서 비슷한 느낌으로 만들어보고자 했다. 색입히기, 마진, 패딩넣기는 그냥 하나씩 해보면서 맞췄다. 만들면서 몇 가지 신경 쓴 것들 배경 블러처리하기 아이폰 메세지 앱을 보면, 화면의 상단부분에는 메세지 내용이 블러처리가 돼서 보이고 상대방의 프로필이 나온다. (메세지들을 스크롤하면 블러부분에도 메세지가 올라가는 것이 흐리지만 보여야한다.) 이를 구현하기.. 2023. 2. 8.
마들렌 만들기 이번에 쿠팡에서 마들렌 틀, 휘낭시에 틀을 사봤다. 원래는 다이소에서 산 6구 머핀틀을 그냥 사용했었는데(모양만 다르지 맛은 같으니까) 예쁜 마들렌, 휘낭시에를 만들면 선물하기도 좋을 것 같아서 한번 사봤다. 팬 하나당 만오천원이 채 되지않는 가격이었는데 나쁘지 않은 것 같다. 마들렌 만드는건 워낙 쉬워서 설명이 필요 없다 계란2개, 설탕100그램, 베이킹파우더3그램, 박력분100그램을 넣고 섞다가 녹인 버터 100그램을 넣고 잘 섞은 후 냉장고에서 몇시간 휴지시킨 후 팬닝해서 구우면 된다. (너무 쉽다) 근데 나는 집에 백설탕이 없고 흑설탕이 있어서 흑설탕을 넣었다 그리고 베이킹파우더도 없고 베이킹소다가 있었는데 옛날에 어디 유튜브에서 흑설탕+베이킹소다를 써서 반죽을 부풀리는게 생각이 나서 베이킹파우더.. 2023. 2. 8.
[자바] 백준 21661번: 다각형의 면적 https://www.acmicpc.net/problem/2166 2166번: 다각형의 면적 첫째 줄에 N이 주어진다. 다음 N개의 줄에는 다각형을 이루는 순서대로 N개의 점의 x, y좌표가 주어진다. 좌표값은 절댓값이 100,000을 넘지 않는 정수이다. www.acmicpc.net 입력으로 꼭짓점의 좌표가 순서대로 들어오는데, 순서대로라는 점을 보아 신발끈 공식을 사용하면 될 것 같다. 신발끈 공식은 꼭짓점의 좌표를 순서대로 늘어놓고, 교차로 곱하고 빼면서 다각형의 넓이를 구하는 공식이다. 자세한 계산방법은 https://namu.wiki/w/%EC%8B%A0%EB%B0%9C%EB%81%88%20%EA%B3%B5%EC%8B%9D 신발끈 공식 - 나무위키 이 저작물은 CC BY-NC-SA 2.0 KR에.. 2023. 2. 8.
[자바] 백준 11758번: CCW https://www.acmicpc.net/problem/11758 11758번: CCW 첫째 줄에 P1의 (x1, y1), 둘째 줄에 P2의 (x2, y2), 셋째 줄에 P3의 (x3, y3)가 주어진다. (-10,000 ≤ x1, y1, x2, y2, x3, y3 ≤ 10,000) 모든 좌표는 정수이다. P1, P2, P3의 좌표는 서로 다르다. www.acmicpc.net 오랜만에 수학문제를 풀었다 P1이 원점이라고 했을 때 P1,P2,P3 중 두개 이상의 점이 같은 곳에 있는 경우, 또는 x=0이나 y=0 직선 위에 세 점이 있는 경우 => 방향성이 없다 P2가 오른쪽(1,4사분면)에 있을 때는... {P1과P2를 그어 직선을 하나 만든다. 직선상에 P3가 존재하는 경우 => 세 점이 나란하므로 .. 2023. 2. 7.
[자바] 백준 1915번: 가장 큰 정삼각형 https://www.acmicpc.net/problem/1915 1915번: 가장 큰 정사각형 첫째 줄에 n, m(1 ≤ n, m ≤ 1,000)이 주어진다. 다음 n개의 줄에는 m개의 숫자로 배열이 주어진다. www.acmicpc.net dp로 푼 문제 입력받는 순서대로 dp를 채워나간다. 현재 칸의 값이 0이면 dp[현재칸][]에도 0을 넣는다. 현재 칸의 값이 1이면, 내 왼쪽, 내 윗쪽, 내 위에서 왼쪽 이 세 칸의 값을 봐야 한다. 세 칸의 값을 보고 세 값 중 최솟값을 가져와서, dp[현재칸][]=최솟값+1을 하면 된다. (왜 이렇게 동작하는지는 그림을 그려보면서 생각해보자) 우선 현재칸의 값이 0이면 이 칸을 포함한 정사각형은 만들수가 없으니 0, 현재칸의 값이 1이면.. 우선 나 혼자서는.. 2023. 2. 6.
[자바스크립트] 스와이프 기능과 터치 var 시작좌표 = 0; var 눌렀음 = false; $('.slide-box').on('mousedown', function(e) { 시작좌표 = e.clientX; 눌렀음 = true; }); $('.slide-box').on('mousemove', function(e) { if (눌렀음 == true) { $('.slide-container').css('transform', `translateX(${e.clientX - 시작좌표}px -${지금사진}00vw)`); } }); $('.slide-box').on('mouseup', function(e) { 눌렀음 = false; console.log(e.clientX - 시작좌표); if (e.clientX - 시작좌표 < -100) { $('.sli.. 2023. 2. 6.
[자바] 백준 1932번: 정수 삼각형 https://www.acmicpc.net/problem/1932 1932번: 정수 삼각형 첫째 줄에 삼각형의 크기 n(1 ≤ n ≤ 500)이 주어지고, 둘째 줄부터 n+1번째 줄까지 정수 삼각형이 주어진다. www.acmicpc.net 삼각형의 맨 꼭대기에서부터 출발해서, 가질 수 있는 최댓값을 각 자리마다 계산해주면 된다. 한 행 안에서 맨 왼쪽 요소는, 그 윗칸의 맨 왼쪽 요소로부터 올 수밖에 없고 한 행 안에서 맨 오른쪽 요소도 마찬가지로, 그 윗칸의 맨 오른쪽 요소로부터 올 수 밖에 없다. 그렇다면 나머지 중간 요소들은? 윗칸의 한 칸 왼쪽 요소, 윗칸의 현재 위치 요소 중 더 큰값으로부터 오면 최댓값을 만들 수 있다. 이렇게 최댓값을 자리별로 모두 구해놓은 다음, 마지막 행에서 최댓값을 찾아.. 2023. 2. 5.
슈팅게임 페이지 가꿔보기 전혀 꾸미지 않았었던 페이지를 부트스트랩을 이용해서 아주 기본적인 것만 만들어 주었다. title을 토리 슈팅게임으로 바꾸었다. 내브바에 "토리 슈팅게임" 제목을 적어주었고, 내 블로그 주소와 깃허브 주소 링크를 넣어두었다. 게임 설명을 alert창 파란색에 적어두고, 난이도를 선택할 수 있게 하였다. 비둘기가 떨어지는 속도를 level이라는 변수로 바꾸고, select form에서 난이도를 선택하면 그에 맞는 속도로 비둘기가 떨어지게 하였다. select form에서 input 이벤트가 발생하면 main(), createEnemy()가 실행되도록 하였다. 그래서 난이도를 선택해야 게임이 실행된다. (처음에는 createEnemy()는 원래대로 두었었는데, 그렇게 했더니 페이지가 로드되고 시간이 조금 지.. 2023. 2. 5.
728x90
반응형