본문 바로가기
728x90
반응형

분류 전체보기647

[자바] 백준 2607번: 비슷한 단어 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.HashSet; public class P2607 { static String original; static HashSet original_set = new HashSet(); public static void main(String[] args) throws NumberFormatException, IOException { // TODO Auto-generated method stub BufferedReader br = new BufferedReader(new InputStreamReader(System.in).. 2023. 3. 5.
[자바] 백준 17848번: 진우와 달 여행(Small) https://www.acmicpc.net/problem/17484 17484번: 진우의 달 여행 (Small) 첫줄에 지구와 달 사이 공간을 나타내는 행렬의 크기를 나타내는 N, M (2≤ N, M ≤ 6)이 주어진다. 다음 N줄 동안 각 행렬의 원소 값이 주어진다. 각 행렬의 원소값은 100 이하의 자연수이다. www.acmicpc.net 일단 문제를 봤을 때... 갈 수 있는 경로 중에서 최솟값만 찾아서 간다고 해도 결과는 최솟값이 나오지 않을 수 있다는 것을 알았다. 그래서 가능한 모든 경로를 봐야할 것이라 생각했고 백트래킹 알고리즘을 사용하면 될 것 같아 코드를 작성했다. import java.io.BufferedReader; import java.io.IOException; import jav.. 2023. 3. 4.
AI의 발전이 내 일자리를 빼앗을까? (chatGPT, Bing) chatGPT가 요즘 화젯거리다. 일상 대화를 하듯이 질문을 하면, 사람처럼 말을 잘 알아듣고 답변을 내놓기 때문이다. 아래는 chatGPT와 대화한 내용이다. 캡처가 잘렸지만 화면 아래로 더 많은 내용이 있었고 실제 내 코드에 적용할 수 있는 정도의 수준이었다. 아래는 마이크로소프트 Bing이다. (Bing은 대기목록에 등록하고, 등록허가가 나고 쓸 수 있다. 등록허가가 나기까지는 약 일주일이 걸린다.) 채팅봇으로서 사람과 대화를 주고받는 것에 목적을 둔 chatGPT와 다르게 Bing은 검색 지원을 목적으로 해서 조금 더 정확한 내용을 전달해준다고 한다. (AI가 직접 웹 검색을 하고, 검색으로 얻은 내용을 요약하여 사용자에게 전달한다고 한다) 이렇게 인공지능 기술이 우리 일상생활에 혁신을 주고 있는.. 2023. 3. 4.
연결지향성, 비연결성, TCP/UDP Network Structure: Network edge: 서버,클라이언트 (end devices) Network core: 라우터들 Access networks, physical media : 링크 Client/Server model: 항상 켜져있는 서버에 클라이언트가 요청을 보내고 응답을 받는 구조 Internet Services Models Connection-oriented service(연결지향성) : 보낸 데이터가 목적지에 도착되었는지 확인가능하여 데이터를 안정적으로 보냄 Connectionless service : 보낸 데이터가 손실되어도 상관하지 않음 TCP(Transmission Control Protocol: 전송 제어 프로토콜) -인터넷의 연결지향성(connection-oriented.. 2023. 3. 3.
[Node.js] Socket.io를 이용하여 실시간 통신하기 저번에 채팅기능을 구현할 SSE방식을 사용했는데 서버->유저 방향으로만 실시간 통신이 된다. socket.io를 이용하여 양방향 통신을 해보자. 우선 socket.io를 설치한다. npm install socket.io 설치를 끝냈다면 const http = require('http').createServer(app); const {Server} = require("socket.io"); const io = new Server(http); server.js파일에 위와같은 코드를 추가하고, app.listen으로 작성했던 코드를 http.listen으로 수정한다. (express라이브러리를 이용하던 것을 http로 수정) 그리고 실시간 통신을 할 HTML파일을 하나 만든다. 여기서는 socket.ejs파일.. 2023. 3. 3.
[자바] 백준 19941번: 햄버거 분배 https://www.acmicpc.net/problem/19941 19941번: 햄버거 분배 기다란 벤치 모양의 식탁에 사람들과 햄버거가 아래와 같이 단위 간격으로 놓여 있다. 사람들은 자신의 위치에서 거리가 $K$ 이하인 햄버거를 먹을 수 있다. 햄버거 사람 햄버거 사람 햄버거 사 www.acmicpc.net 배열에 햄버거/사람 정보를 입력받아 둔다. 배열의 인덱스0부터~끝까지 반복문을 돈다. 사람이라면.. 범위(k)안에 있는 햄버거 중 가장 왼쪽 것을 먹는다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public c.. 2023. 3. 3.
[Node.js] 채팅 기능 구현하기 당근마켓을 이용해본 적 있다면 익숙할 기능. 채팅하기 기능이다. 어떠한 게시물에서 '채팅하기'버튼을 누르면 글 작성자와 1대1 채팅을 시작할 수 있다. 그리고, /chat 접속시 내가 참여중인 채팅방을 보여주자. 채팅기능 구현을 위한 단계는 이렇다. 채팅방 개설. 1. list.ejs 에 '채팅하기'버튼을 추가하고, 버튼 클릭시 post요청(채팅방 개설) 2. server.js에서 1번의 post요청 처리 3. chat.ejs 디자인 4. server.js에서 /chat으로의 get요청 처리(이 때, 현재 로그인한 사용자가 속해있는 채팅방들의 정보를 전달) 여기까지 했다면 이제부터 채팅방의 메세지들을 처리하는 코드를 추가. 5. /chat에서 메세지 전송시 post요청(어떤 채팅방에서,언제,어떤 내용인지.. 2023. 3. 2.
[자바] 백준 1515번: 수 이어 쓰기 https://www.acmicpc.net/problem/1515 1515번: 수 이어 쓰기 세준이는 1부터 N까지 모든 수를 차례대로 공백없이 한 줄에 다 썼다. 그리고 나서, 세준이가 저녁을 먹으러 나간 사이에 다솜이는 세준이가 쓴 수에서 마음에 드는 몇 개의 숫자를 지웠다. 세준 www.acmicpc.net 실버3인데 생각보다 어렵게 푼 문제. dp로 풀었다. 2번을 위해 1번에서 문자열 포함여부를 확인할 때 indexOf 메소드를 이용하였다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class P1515 { public static void main(String.. 2023. 3. 2.
[자바] 백준 21921번: 블로그 https://www.acmicpc.net/problem/21921 21921번: 블로그 첫째 줄에 $X$일 동안 가장 많이 들어온 방문자 수를 출력한다. 만약 최대 방문자 수가 0명이라면 SAD를 출력한다. 만약 최대 방문자 수가 0명이 아닌 경우 둘째 줄에 기간이 몇 개 있는지 출력한다 www.acmicpc.net 앞에서부터 x일씩 묶어서 최대방문자 수를 비교한다. 최대방문자를 갱신했다면 max값을 바꾸고 count를1로 만든다. 최대방문자수와 같다면 count만 1 증가시킨다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer.. 2023. 3. 1.
[자바] 백준 2512번: 예산 https://www.acmicpc.net/problem/2512 2512번: 예산 첫째 줄에는 지방의 수를 의미하는 정수 N이 주어진다. N은 3 이상 10,000 이하이다. 다음 줄에는 각 지방의 예산요청을 표현하는 N개의 정수가 빈칸을 사이에 두고 주어진다. 이 값들은 모두 1 이상 www.acmicpc.net 예전에 풀었던 나무자르기와 동일한 문제였다. 그 땐 분명히 풀었는데, 똑같은 로직으로 똑같이 풀려고 했는데도 코드를 짜기 힘들었다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.Collections.. 2023. 2. 28.
[자바] 백준 20920번: 영단어 암기는 괴로워 https://www.acmicpc.net/problem/20920 20920번: 영단어 암기는 괴로워 첫째 줄에는 영어 지문에 나오는 단어의 개수 $N$과 외울 단어의 길이 기준이 되는 $M$이 공백으로 구분되어 주어진다. ($1 \leq N \leq 100\,000$, $1 \leq M \leq 10$) 둘째 줄부터 $N+1$번째 줄까지 외울 단 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.ArrayList.. 2023. 2. 27.
[자바] 백준 2164번: 카드2 https://www.acmicpc.net/problem/2164 2164번: 카드2 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 www.acmicpc.net LinkedList를 이용하여 구현하면 된다. while문을 이용하여 LinkedList의 size가 1이 될 때까지 맨 앞 카드 한 장을 버리고 ==> LinkedList.remove(0); 그 다음 한 장을 맨 뒤에 놓는다 ==> int now = LinkedList.remove(0); -> LinkedList.add(now); import java.io.BufferedReader; impor.. 2023. 2. 27.
T.G.I Friday 대구현대시티아울렛점 TGI에 갔다. 아웃백을 갈지 TGI를 갈지 고민하다가 마침 금요일이라 TGI이벤트도 있고, 프라잇데이라고 메인메뉴를 2천원에 먹을 수 있는 이벤트가 있어 TGI로 갔다. 이건 콘샐러드. 옥수수 알갱이가 조금씩 씹히는데 고소하고 맛있다. 케이준치킨 샐러드. 샐러드 위에 치킨이 가득 올라가있고 허니머스타드 소스는 따로 컵에 담아 준다. 이 치킨샐러드가 아웃백에도 똑같은 메뉴가 있는데..정말 평범한 메뉴기는 하나 개인적으로는 아웃백의 치킨샐러드가 좀 더 좋았던 것 같다. 아웃백에서는 치킨이 약간 황금빛에 가까웠는데 여기 치킨은 살짝 오래튀긴듯 했다. 그래서 (비교하자면)정말 정말 아주약간 쌉싸름한 맛이 느껴졌다. 채끝스테이크였나? 무난하게 맛있는 맛이었는데 양이 적어 혼자 한접시를 다 먹어도 배고플것같았다... 2023. 2. 27.
명륜진사갈비 대구구암점(리뉴얼) 예전엔 무한으로 즐기러 명륜진사갈비에 자주 갔는데.. 대구구암점은 무슨 리뉴얼을 했다고 한다. 들어가보니~ 무슨 뷔페같은 코너가 생겼다 메뉴는 밥, 떡볶이, 잡채, 묵무침, 각종튀김(만두,감자튀김 등),모닝빵이 다긴 한데 여기 떡볶이랑 튀김이.... 맛있다. 다들 고기먹는데 집중할 때.. 혼자 떡볶이가 너무 맛있어서 떡볶이에 튀김 찍어먹었다. (거의 떡볶이 두그릇에 감자튀김 한사발 먹은듯) 특히 저 맛감자가 정말 맛있다. 너무 맛있어서 고기 쌈싸먹을때도 넣어먹었다. 그 햄버거에 해시브라운 넣는 그런느낌으로 생각하면 된다. 쌈이 부드러워진다 고기를 가져오는것도 셀프이다. 삼겹살, 양념고기, 닭갈비, 껍데기 등등 여러가지가 준비돼있다. 별 기대 안했던 닭갈비가 매콤하니 맛있었다. 약간 그을린게 참 맛나게 생.. 2023. 2. 27.
식물 근황(2023.02.27) 바질 다 죽었다. 바질이 원래 1년생이라지만, 실내에서 잘 키우면 몇년도 키운다고 하는데.. 우리집 바질도 튼튼하게 잘 자라다가 갑자기 검은색 점이 생기더니 이파리를 다 떨구고 가지가 쪼그라들고 그대로 죽어버렸다. 방울토마토는 다 따먹고 갖다버렸다. 내 마지막 희망1 아보카도 다행히도 정말 튼튼하다 물을 안 갈아준지 세달..된것같은데 아직도 건재하다. 생각난김에 물 한번 갈아줬다. 그런데, 햇빛을 한쪽으로만 받아서 그런지 이파리가 다 앞쪽으로만 나길래 반대쪽에도 이파리가 좀 났으면 하는 마음으로 화분을 반대로 돌려놨다. 뿌리가... 아주 잘 자라서 화분 모양대로 빙글빙글 돌고있다. 그나저나... 저 페트병 대가리는 어떻게 떼줘야할지 참 고민이된다. 천혜향도 잘 자라고있다. 아직도 이것밖에 안 자랐다니. .. 2023. 2. 27.
올리브 치아바타 만들기 이번에 홈플러스 갔다가 절인 올리브를 사왔는데 이것을 이용해서 치아바타를 만들어봤다. 이 유튜브 영상을 참고했다. (정말 간단하니 꼭 따라해보길 바람) 반죽이 너무 간단하다. 물1컵 설탕 반밥숟갈 소금 반밥숟갈 드라이이스트2g 올리브유 3밥숟갈 밀가루(나는 중력분 씀)2컵 올리브(넣고싶은만큼) 모두 넣고 밥숟가락으로 술술 저으면 쉽게 한 덩이가 된다. 그럼 랩으로 씌워 1시간 발효한다. 1시간 발효가 끝났다면.. 반죽을 길게 늘렸다 반으로 접는 과정을 몇번 해준 후 30분 발효한다. ->이것을 3~4번정도 한다. (30분마다 반죽을 봐야해서 귀찮긴 한데, 반죽 늘렸다 접는건 숟가락 써서 하면 손에 반죽 안묻히고도 1분안에 할 수 있다) 마지막으로, 도마 위에 덧가루를 잔뜩 뿌린 후 반죽을 살살 조금만 늘.. 2023. 2. 27.
에그타르트 만들기 지난 주말에 에그타르트를 만들었다. 예전에도 몇번 에그타르트를 만들었었지만 타르트지를 제대로 만들지 못해서 항상 눅눅하고 축축하게 나오는 문제가 있었다. 이번에는 제대로 준비했다. 에그타르트2.0 요즘 즐겨보는 커픽쳐스 채널의 에그타르트 영상을 참고해 타르트지를 만들었다. 만드는 방법도 꽤나 간단하다. (나는 반배합으로 만들었다) 재료: 강력분 70g 박력분 55g 버터 90g 찬물 60g (모든 재료는 차갑게 준비한다) 소금 3g 타르트지 만드는 방법: 모든 가루류를 섞고, 그 위에 버터를 깍둑썰어 버무린다. 버터가 작은 콩정도의 크기가 될 때까지 스크래퍼를 이용해서 버터를 잘게 쪼갠다. 밀가루 중앙에 홈을 파서 물을 조금씩 따라넣고, 살살 섞는다. . . 한 덩이로 뭉쳐졌다면, 반죽을 밀대로 길게 밀.. 2023. 2. 27.
[스타벅스] SS DW 그린 워드마크 투고 텀블러 얼마전 생일선물로 스타벅스 텀블러를 받았다. 포장을 열어보면~ 안에 텀블러가 떡하니 들어있다. 그냥 평범한 기본 텀블러라고 생각했는데 엄청 반짝반짝하고 영롱한 색이라 기대이상으로 마음에 들었다. 뚜껑은 밀어서 여닫는 형식이며 완전밀봉 형식은 아니기 때문에 닫아놓아도 음료가 샐 수 있다. 내부 용량은 꽤나 크다. 591ml인데, 스타벅스의 벤티사이즈를 생각하면 된다. 스타벅스에서 음료를 주문할 때, 개인컵을 사용할 수 있는데 개인컵 사용시 별1개 추가적립 또는 400원 할인이 된다고 하니 앞으로 텀블러 잘 활용해서 환경도 보호하고 돈도 아껴야겠다. 2023. 2. 27.
[Node.js] 환경변수로 민감한 정보 가리기(.env) 내 DB 주소나 포트번호 등 민감정보를 .env를 이용하여 숨겨보자. npm install dotenv 우선 터미널에 다음과 같이 입력해서 dotenv를 설치하자. 이제 .env라는 파일을 하나 생성해서 민감정보를 작성하자. (.env) PORT=8080 DB_URL="abcdefg/hijk.com" 이제 원래 파일로 돌아가서, 민감정보를 사용할 위치에 process.env.변수명 을 적어주면 된다. MongoClient.connect(process.env.DB_URL, function (에러, client) { 예를들면 이렇게. 원래 URL을 적는 곳에 process.env.DB_URL을 적어주었다. 그럼 끝이다. 깃허브 등에 올릴때는 gitignore에 .env를 등록해서 .env를 업로드하지 않으면.. 2023. 2. 26.
[Node.js] 이미지 서버 만들기(multer 라이브러리 사용) 이미지를 업로드하고, 서버에서 이를 처리하여 이미지를 저장하고 사용할 수 있게 만들어보자. 우선 업로드를 할 페이지 /upload를 만들어보자. (upload.ejs) 업로드페이지 전송 간단하게 form태그 안에 input태그 하나와 button태그 하나를 추가해서 만들었다. form에서 method="POST", action="/upload"로 설정하였다. enctype은 서버로 폼 데이터를 전송할 때 인코딩 형식 설정을 하는것인데 일반적으로는 enctype="multipart/form-data"로 설정하면 된다. (server.js) app.get('/upload',function(요청,응답){ 응답.render('upload.ejs'); }) 우선 /upload로의 get요청을 처리해준다. 이제 p.. 2023. 2. 26.
728x90
반응형