본문 바로가기
728x90
반응형

분류 전체보기647

[자바] 백준 9017번: 크로스 컨트리 https://www.acmicpc.net/problem/9017 9017번: 크로스 컨트리 입력 데이터는 표준입력을 사용한다. 입력은 T 개의 테스트 케이스로 주어진다. 입력 파일의 첫 번째 줄에 테스트 케이스의 수를 나타내는 정수 T 가 주어진다. 두 번째 줄부터는 두 줄에 하나의 www.acmicpc.net 구현 문제이다. import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.Arrays; import java.util.Comparator; .. 2023. 2. 26.
[Node.js] router 폴더 및 파일로 API관리하기 지금까지 하나의 서버파일에 여러가지 app.get(), app.post()등의 코드를 작성했다. 이런 코드들을 비슷한 요소들을 묶어 별도의 파일로 관리하고싶을 때는 어떻게 해야할까? 우선 route를 보관할 폴더를 하나 만들었다. /route 그리고 폴더 내부에 js파일을 생성한다. var router = require('express').Router(); router.get('/shop/shirts',function(요청,응답){ 응답.send('셔츠팔아요'); }) router.get('/shop/pants',function(요청,응답){ 응답.send('바지팔아요'); }) module.exports = router; (shop.js) 이 파일에는 /shop으로 시작하는 url들의 요청을 처리하는 .. 2023. 2. 26.
[Node.js] 회원가입, 회원기능 만들기 저번에 로그인기능을 만든 것에 이어, 조금의 응용을 더하여 회원가입과 회원기능(글 쓴 사람만 글 삭제 가능 등)을 만들어보자. app.post('/register',function(요청,응답){ db.collection('login').findOne({id:요청.body},function(에러,결과){ if(결과!=null){ 응답.send('이미 존재하는 아이디입니다') console.log(결과); }else{ //아이디 생성 db.collection('login').insertOne({id:요청.body.id,pw:요청.body.pw},function(에러,결과){ 응답.redirect('/'); }) } }) }) 회원가입은 간단하게 만들었다. id중복이 있는지만 체크한 후 바로 아이디가 만들어지.. 2023. 2. 25.
[자바] 백준 1244번: 스위치 켜고 끄기 https://www.acmicpc.net/problem/1244 1244번: 스위치 켜고 끄기 첫째 줄에는 스위치 개수가 주어진다. 스위치 개수는 100 이하인 양의 정수이다. 둘째 줄에는 각 스위치의 상태가 주어진다. 켜져 있으면 1, 꺼져있으면 0이라고 표시하고 사이에 빈칸이 하나씩 www.acmicpc.net import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.StringTokenizer; public class P1244 { static.. 2023. 2. 25.
[Node.js] 검색기능 만들기(query string) 게시판의 검색기능을 만들어 보자. (list.ejs) 검색 게시판의 글을 보여주는 페이지인 list.ejs 이곳에 검색을 위한 input태그와 검색버튼을 만들어준다. (list.ejs의 script 태그) $('#search').click(function(){ var 검색어 = $('#search-input').val() window.location.replace(`/search?value=${검색어}`) }) 검색버튼을 눌렀을 때, `/search?value=${검색어}` 경로로 이동하도록 했다. 왜 이렇게 했을까? 검색을 하려면 서버에 검색어를 넘겨줘야하는데, POST요청으로 데이터를 보내도 되지만, 특정 url뒤에 데이터를 심어 GET요청을 보내는 것으로도 데이터를 보낼 수 있기 때문이다. 이를 q.. 2023. 2. 24.
[자바] 백준 20125번: 쿠키의 신체 측정 https://www.acmicpc.net/problem/20125 20125번: 쿠키의 신체 측정 쿠키런은 데브시스터즈에서 제작한 모바일 러닝 액션 게임이다. 마녀의 오븐에서 탈출한 쿠키들과 함께 모험을 떠나는 게임으로, 점프와 슬라이드 2가지 버튼만으로 손쉽게 플레이할 수 있는 www.acmicpc.net 심장을 기준으로 상하좌우가 머리,허리,왼팔,오른팔로 이어져있기 때문에 현재칸을 기준으로 현재칸과 상하좌우가 다 *이라면 현재칸이 심장인것으로 생각할 수 있다. 심장의 위치를 찾았다면 반복문을 통해 *의 개수를 세서 팔다리허리의 길이를 재면 된다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamR.. 2023. 2. 24.
경주 더 케이 호텔/ 취업 역량 강화 교육(자소서 작성법 등) 23.02.20. - 23.02.21. 이틀간 취업역량 강화교육을 다녀왔다. 경주에 위치한 더케이호텔. 호텔이 아주 세련됐다기보다 조금 연식이 있어보였고 부지가 꽤 넓어보였다. 기대하지 않은것에 비해서 꽤나 만족스러웠던 방. 침대나 욕실은 깔끔했고, 방 내부에는 작은 테이블과 의자가 있어서 방 안에서 간단하게 간식을 먹기도 했다. 또, 창밖으로는 황룡사지9층목탑을 볼 수 있고, 저 멀리에는 경주월드가 보이기도 한다. 조금 걸어나가다 보면 스타벅스도 있는데, 스타벅스에서 바닐라 아이스크림, 그릭요거트를 사먹기도 했다. 그리고.. 21일이 내 생일이었기 때문에.. 친구가 스타벅스 케이크를 사줘서 맛있게 먹었다. 또, 500미터정도 거리에 강을 건너가면 버거킹같은 음식점도 있어서 출출할 때는 버거킹에 가서 간.. 2023. 2. 24.
대구EXCO 디카페쇼 후기 엑스코에서 열린 디카페쇼를 다녀왔다. 사전등록을 하고가면, 간단하게 확인절차를 거친 후에 손목에 착용하는 입장권을 준다. 내부로 입장하면 꽤나 넓은 공간이 나오는데, 이 안에 각종 부스들이 즐비해있다. 세미나도 들었다. (미리 신청을 하긴 했는데, 안 해도 자유롭게 볼 수 있는듯 했다) '소명'카페 사장님께서 나오셨다. 이 카페에서는 특이하게 '커마카세'를 운영하는데 흔히 일식집에서 하는 오마카세를 카페버전으로 바꿨다고 보면 될 것 같다. 소명 카페라는 이름에 걸맞게.. 소명을 갖고 일을 해야한다고 하셨다.(보통 소명이라 하면, 의사같은 전문직만 소명을 갖고 일하면 되는거 아니야?라고 생각할 수 있는데 요식업에서도 소명을 가져야한다고..) 그리고 내 커피의 가치를 어떻게 소비자들에게 보여줄지에 대해 고민.. 2023. 2. 24.
칠곡 3RD SPACE COFFEE 싸드 스페이스 커피. 너비는 그렇게 크지않은데 높은 건물인것이 특징이다. 이 건물 전체가 카페인데 4층이나 된다. 굿즈도 만들어서 팔고있고, 디저트류로는 각종 르뱅쿠키, 휘낭시에, 마늘빵등이 있다. 쿠키는 꽤 맛있어보였고 굿즈는 머그컵,물병을 제외하면 실용성이 떨어지는 물품들이라 수집하는 것을 좋아하는 사람이나 다꾸를 하는사람이 살 법 하다. 시그니처라떼, 말차라떼, 마늘빵을 주문했다. 시그니처라떼는 기억상으로 초콜릿,아몬드향이 나는 커피였던 것 같았는데 초콜릿맛이 나긴 하지만 크게 달진 않았다. 말차라떼는 크게 특별하진 않고, 우유에 말차가루를 개어넣은듯한 맛. 마늘빵은 안에 크림치즈 필링이 가득 들었다. 빵의 겉부분에는 시럽코팅같은것이 되어있는데 상당히 달콤하고 약간 바작한 식감을 낸다. 왼쪽사진은 .. 2023. 2. 24.
[자바] 백준 25757번:임스와 함께하는 미니게임 https://www.acmicpc.net/problem/25757 25757번: 임스와 함께하는 미니게임 첫 번째 줄에는 사람들이 임스와 같이 플레이하기를 신청한 횟수 $N$과 같이 플레이할 게임의 종류가 주어진다. $(1 \le N \le 100\,000)$ 두 번째 줄부터 $N$개의 줄에는 같이 플레이하고자 하는 사람들 www.acmicpc.net 한사람당 게임은 한번만 하기때문에 set에 저장하면 중복된 사람을 제외할 수 있다. 중복을 제외한 사람의 수를 센 다음, 게임에 필요한 인원-1(한명은 임스이므로 1뺌)으로 나눈 값을 출력하면 된다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamRe.. 2023. 2. 23.
[Node.js] 마이페이지 만들기(로그인 상태에서만 이용 가능한 페이지) 저번에 로그인 기능을 만들었던 것에 이어 마이페이지를 만들어보자. 처음 로그인할 때는 passport.serializeUser()함수를 이용하여 세션을 생성해주었는데, 이번에는 세션정보로 DB에서 유저정보를 찾는 passport.desrializeUser()함수를 이용해야 한다. //이 세션데이터를 가진 사람을 DB에서 찾음 passport.deserializeUser(function(아이디,done){ db.collection('login').findOne({id:아이디},function(에러,결과){ done(null,결과) }) }); db의 findOne함수로 간단하게 작성할 수 있다. 미리 만들어둔 mypage.ejs를 get요청시 렌더해주여야하는데, 렌더하기전에 유저가 로그인했는지 판별할 필요.. 2023. 2. 23.
[Node.js] 로그인 기능 추가하기(Session 방식) 세션 방식의 로그인 기능을 추가해보자. 라이브러리 설치 npm install passport passport-local express-session 터미널에서 passport, passport-local express-session 이 세가지 라이브러리를 설치한다. const passport = require('passport'); const LocalStrategy=require('passport-local').Strategy; const session = require('express-session'); app.use(session({secret : '비밀코드',resave : true, saveUninitialized: false})); app.use(passport.initialize()); ap.. 2023. 2. 22.
[Node.js] 글 수정 기능 추가하기 edit 페이지를 추가하고 기존의 글을 수정할 수 있게 만들어보자. 우선 edit.ejs파일부터 만든다. app.get('/edit/:id',function(req,res){ db.collection('post').findOne({_id:parseInt(req.params.id)},function(에러,결과){ res.render('edit.ejs',{data: 결과}) }) }) 상세페이지를 만들었을 때와 마찬가지로, 경로 뒤에 id값을 파라미터로 받아서, 해당 글을 수정하는 페이지가 보이게 하자. /edit/:id 경로로 get 요청을 하면, DB에서 _id값이 (파라미터)id와 일치하는 데이터를 찾아 edit.ejs로 보내 렌더링한다. 번 글 수정하기 2023. 2. 22.
[자바] 백준 4659번: 비밀번호 발음하기 https://www.acmicpc.net/problem/4659 4659번: 비밀번호 발음하기 좋은 패스워드를 만드는것은 어려운 일이다. 대부분의 사용자들은 buddy처럼 발음하기 좋고 기억하기 쉬운 패스워드를 원하나, 이런 패스워드들은 보안의 문제가 발생한다. 어떤 사이트들은 xvtp www.acmicpc.net 문제에서 말하는 조건대로 구현하면 된다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class P4659 { public static void main(String[] args) throws IOException { BufferedReader br = new.. 2023. 2. 22.
[자바] 백준 10431번: 줄세우기 https://www.acmicpc.net/problem/10431 10431번: 줄세우기 초등학교 선생님 강산이는 아이들을 데리고 단체로 어떤 일을 할 때 불편함이 없도록 새로 반에 배정받은 아이들에게 키 순서대로 번호를 부여한다. 번호를 부여할 땐 키가 가장 작은 아이가 1 www.acmicpc.net Linkedlist를 만들어서 실제로 줄을 세워보면 된다. import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.LinkedList; impor.. 2023. 2. 19.
[Node.js] CSS파일 이용하는 법 CSS파일이나 이미지같은 자료들은 관습적으로 /public 폴더에 만든다고 한다. .html이나 .ejs파일의 헤더에 태그를 넣어 CSS를 사용할 수 있다. 그런데 public폴더를 사용한다는 것을 서버에도 알려주어야 한다. (server.js) app.use('/public',express.static('public')); 서버.js파일에 다음과 같은 코드를 추가하면 된다. 2023. 2. 19.
HTML을 조립식으로 사용하기 네비게이션 바를 보면 똑같은 모양의 navbar가 index, write, list페이지에 있다. 각 페이지마다 navbar 코드를 작성해도 작동은 되지만, navbar를 수정해야 하는 경우에는 모든 페이지에서 navbar를 수정해주어야 하는 문제가 생긴다. navbar를 따로 빼두고, 조립식으로 HTML을 만들어 보자. ejs를 이용한다. (ejs를 설치하지 않았다면 npm install ejs를 터미널에 입력해서 설치하고 시작하자) 작업폴더 내에 views폴더를 하나 만들고, 모든 페이지의 확장자를 .html에서 .ejs로 바꾼 후 views폴더로 이동시킨다. Todo App Home (current) Write List Disabled 그리고 navbar 코드만 잘라내서, nav.html파일로 저장.. 2023. 2. 19.
[Node.js] 글 상세페이지 만들기 글 제목을 클릭하면 상세페이지가 열리는것을 만들어 보자. 우선, 상세페이지는 하나만 있는것이 아니라, 글마다 하나씩 있어야 하기 때문에 경로를 /detail/:id로 했다. 그러면 '/detail/글번호 '경로로 해당 글번호에 해당하는 상세페이지를 볼 수 있다. (server.js) app.get('/detail/:id',function(req,res){ db.collection('post').findOne({_id:parseInt(req.params.id)},function(에러,결과){ console.log(결과); res.render('detail.ejs',{data:결과}) }) }) '/detail/:id' 경로로 오는 get요청을 처리해준다. 경로에서 콜론: 뒤에오는 것은 파라미터로, req... 2023. 2. 19.
[Node.js] 글 삭제 기능 만들기 삭제버튼을 누르면 해당 포스트가 삭제되도록 만들어 보자. 삭제 우선 list.ejs 파일을 보자. button태그를 이용해서 삭제버튼을 만들어주었고, 현재 글의 id값을 저장하기 위해서 버튼태그 안에 data-id를 적어주었다. (이렇게 안하고 그냥 태그에 글번호를 적어줘도 되기는 하지만 이 방법이 더 편하고 깔끔할 것 같다.) $('.delete').click(function (e) { var 글번호 = e.target.dataset.id; var 현재요소 = $(this); $.ajax({ method: 'DELETE', url: '/delete', data: { _id: 글번호 } }).done(function(결과) { //ajax요청성공시 실행할 코드 현재요소.parent('li').fadeOu.. 2023. 2. 19.
[자바] 백준 9655번: 돌 게임 https://www.acmicpc.net/problem/9655 9655번: 돌 게임 상근이가 게임을 이기면 SK를, 창영이가 게임을 이기면 CY을 출력한다. www.acmicpc.net import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class P9655 { public static void main(String[] args) throws NumberFormatException, IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parse.. 2023. 2. 18.
728x90
반응형