전체 글200 백준 - 10282 해킹 풀이 방법 다익스트라 알고리즘을 공부하기 위해서 찾았던 문제!! 골드임에도 크게 어려운 편은 아니다. 예전에 풀었던 네트워크 문제와 뭔가 비슷하다는 느낌을 많이 받았다. 풀이 포인트는 아래와 같다!! 이 문제의 핵심 포인트는 감염까지 걸리는 최소 시간을 계산하는 것!! 백준 네트워크 문제와 비슷하지만 DFS 나 BFS 로 풀면 시간초과가 나거나 메모리 초과가 발생한다. 이에 다익스트라 알고리즘으로 문제를 풀어야했다. 최소 시간이라는 말은 딱히 없지만...최소 시간이 걸리도록 계산해야함으로 다익스트라 알고리즘을 사용한다. 그나마 주의할 점은 a 가 b 를 의존한다는 점과 전체 입력 받을 때 살짝 복잡하다는 정도? 뭔가 쉬운듯 어려운 다익스트라ㅠㅠ 나머지는 주석 참고!! package baekJoon; im.. Java - 알고리즘 2022. 9. 11. 백준 - 2579 계단오르기 풀이 방법 실버3 문제이기도 하고, DP 알고리즘 관련해서 공부해보고 싶어서 풀었다가...생각보다 어려워서 고민을 많이했던 문제이다. 물론 엄청 어려웠던 것은 아니고, 뭐랄까...다른 알고리즘 문제보다 수학적인 접근이 필요한? 문제라고 느껴졌다. 마치 그리디 문제나 수학 관련된 문제를 푸는 것처럼 점화식을 찾는 부분도 특히 그랬다. 여튼 이 문제는 아래와 같은 방법으로 접근하면 된다!! // 이 문제의 포인트는 문제를 쪼개서 쉽게 생각하는 것!! // 정확히는 문제중에서 조건을 쪼개고 연결시켜서 다 쉽게 생각하는것이 중요하다. // 조건 1. 현재 계단 i+1 이거나 i+2 가 가능하다. // 조건 2. 단 계단을 i+1, i+2, i+3 순서대로 오를 수 없다. 최대 i+1, i+2 만 가능하다 => .. Java - 알고리즘 2022. 9. 11. Spring Boot Web Chatting : 스프링 부트로 실시간 채팅 만들기 (3) S3 기반 채팅 파일 업로드 & 다운로드 10.29 추가 : 일반(문자) 채팅만 구현하는 코드는 git 의 master 브렌치를 참고해주시기 바랍니다. master-Webrtc-jpa 는 화상 채팅과 jpa 를 이용한 DB 연결을 포함하는 브렌치입니다. - 최근 스터디에서 파일 업로드와 관련된 프로젝트를 하자고 이야기가 나왔고, 이에 만들어두었던 채팅에 이어서 만들어보고 싶어서 부랴부랴 AWS S3 와 연동해서 S3 기반 파일 업로드를 구현하였다. - 원래는 S3의 bucket 만들기부터 시작해서 ACL 설정 등등 만져줄게 많은데 이것들은 담에 설명하기로 하고, 이번에는 코드만 정리하고 넘어가려고 한다. => 혹시나 필요하신 분들을 위해서 이 부분은 아래에 참고 사이트를 넣어두었으니 확인 부탁드립니다! - 아래의 추가된 모든 내용은 해당 git.. 토이 프로젝트/Spring&Java 갖고놀기 2022. 9. 7. Docker 개념 알아보기 : docker , docker hub, docker image 도커의 기반 - Linux Container 리눅스 컨테이너는 운영체제 수준의 가상화 기술로 리눅스 커널을 공유하면서 프로세스를 격리된 환경에서 실행하는 기술이다. 하드웨어 자체를 가상화하는 가상 머신과 달리 커널을 공유하는 방식이기 때문에 실행속도가 더 빠르고, 성능 상 손실이 거의 없다는 장점이 있다. 그럼에도 리눅스의 기능인 chroot, namespace, cgroup 를 사용하기 때문에 격리된 환경에서 구동되기 때문에 호스트 머신에게는 프로세스로 인식되지만 각 컨테이너의 관점에서는 마치 독립적인 환경을 가진 가상 머신처럼 보이게 된다. Docker 란? - 도커 - docker - 란 Linux Container 에 여러 기능을 추가함으로써 Application 을 좀 더 쉽게 사용할 수 있게 .. Server/Docker & Kubernetes 2022. 9. 7. 백준 - 1026 보물 https://www.acmicpc.net/problem/1026 1026번: 보물 첫째 줄에 N이 주어진다. 둘째 줄에는 A에 있는 N개의 수가 순서대로 주어지고, 셋째 줄에는 B에 있는 수가 순서대로 주어진다. N은 50보다 작거나 같은 자연수이고, A와 B의 각 원소는 100보다 작거 www.acmicpc.net 풀이 방법 요번에는 쉬운 문제!! 입력받는 배열 A와 B 에서 각각 i 번째 인덱스끼리 곱한 후 더해서 최소값을 만드는 문제이다 최소값을 어떻게 만들지만 생각하면 굉장히 간단해지는 문제이다. 입력받는 두 배열의 i번째 값들을 곱해서 최소값을 만드려면 A 배열의 최대값과 B 배열의 최소값을 곱하면 될 것이다(혹은 그 반대). 때문에 A 배열을 오름차순으로 정렬하고, B 배열을 내림차순으로 정.. Java - 알고리즘 2022. 9. 6. 백준 - 2981 검문 https://www.acmicpc.net/problem/2981 2981번: 검문 트럭을 타고 이동하던 상근이는 경찰의 검문을 받게 되었다. 경찰은 상근이가 운반하던 화물을 하나하나 모두 확인할 것이기 때문에, 검문하는데 엄청나게 오랜 시간이 걸린다. 상근이는 시간 www.acmicpc.net 풀이 방법 어떤 문제에 이은 무식하면 용감하다 시리즈 2번째 최근에 유클리드 호제법을 공부하고 관련된 문제를 풀어서 이번에도 쉬울 줄 알고 도전했는데...세상에 이렇게 어려운 문제일 줄은 몰랐다. 물론 풀고 나니까 내가 몰랐었던 혹은 까먹었던 부분들 - 정수론, 나머지 정리 - 을 잘 버무리고 활용하면 쉽게 풀릴만도 했지만 나는 문과였고ㅠㅠ 유클리드 호제법도 정수론도 이제야 보게 되었다ㅠㅠ 여튼 그래도 저런거 다.. Java - 알고리즘 2022. 9. 5. 백준 - 4485 녹색 옷 입은 애가 젤다지? 풀이 방법 오랜만에 도전한 골드 문제!! 처음에 생각없이 BFS 로 코드를 짰는데 메모리 초과가 발생해서 방향을 다시 잡고 코드를 치기 시작했다. 이 문제의 핵심 포인트는 녹색옷을 입을 애가 젤다라는 점!! 이 아니고ㅋㅋㅋㅋ 2차원 배열로 입력받는다고 하더라도 결국 n-1, n-1 좌표에 도착하는 최소값을 구하는 문제라는 점이다. BFS 나 DFS 로 푸는것이 아니라 다익스트라 알고리즘을 사용해야한다. 다만 우리는 그래프 형식이 아니고 배열로 입력받기 때문에 어떻게 좌표(노드)에서 좌표(노드) 로 넘어갈 수 있는지 고민해야한다. 나는 이 부분을 DFS, BFS 에서 사용하던 dx, dy 배열을 사용해서 풀이를 하였다. 즉, dx, dy 를 통해 계산된 nx, ny 좌표가 배열의 범위 안에 존재하면 이전 .. Java - 알고리즘 2022. 9. 2. Spring Boot Web Chatting : 스프링 부트로 실시간 채팅 만들기(2) chatDTO, DAO, Socket.js 코드 알아보기 10.29 추가 : 일반(문자) 채팅만 구현하는 코드는 git 의 master 브렌치를 참고해주시기 바랍니다. master-Webrtc-jpa 는 화상 채팅과 jpa 를 이용한 DB 연결을 포함하는 브렌치입니다. 1. 기본 개념 설명 STOMP - STOMP 는 Simple Text Oriented Messaging Protocol 의 약자로 메시지 전송을 위한 프로토콜이다. 기본적인 Websocket 과 가장 크게 다른 점은 기존의 Websocket 만을 사용한 통신은 발신자와 수신자를 Spring 단에서 직접 관리를 해야만 했다. 즉 WebSocketHandler 를 만들어서 WebSocket 통신을 하는 사용자들을 Map 등으로 저장하고 이를 직접 관리하며 클라이언트에서 들어오는 메시지를 다른 사용.. 토이 프로젝트/Spring&Java 갖고놀기 2022. 9. 1. 백준 1193 : 분수찾기 풀이 방법 백준 브론즈의 탈을 쓴 실버 문제...매번 느끼는 것이지만 백준에서 '수학' 이 붙은 애들은 모두 실버 이상의 난이도라고 생각이된다ㅠㅠ 특히나 규칙을 못 찾으면 차라리 BFS, DFS 문제 푸는게 더 쉽다고 느껴질 정도이다. 이 문제가 특히 그랬는데 뭔가 보일듯 말듯 하면서 시간이 정말 오래걸려서 풀었다. 사실 수학 관련 문제가 그렇듯, 이 문제도 점화식을 세우면 혹은 그에 준하는 규칙을 찾으면 해결의 실마리가 보이는 편이다. 짝수 층과 홀수 층에 관한 규칙, n번째 층에 총 몇개의 분수가 오는지 규칙을 찾아서 점화식을 세워야 한다. 나는 문제의 지그재그 순 이라는 것을 하나의 층으로 생각하였다. 즉 1층에는 1/1, 2층에는 1/2, 2/1 ---- 이런 식이다. 여기에 각 층에 몇개의 분수.. Java - 알고리즘 2022. 8. 30. 백준 - 2839 설탕배달 풀이 방법 스터디에서 곧 풀게될 문제라서 미리 풀어보았던 문제였다. 그런데 그리디 알고리즘이라는 것을 알고 한번 좌절ㅠㅠ 하였다가 몇번이나 틀리고 코드를 완성시켰다. 문제를 풀고나서 보니까 이게 나처럼 무식하게 풀 필요가 없이...규칙을 찾아서 풀면 풀리는 문제라는 것을 알고 한번 더 좌절했다ㅠㅠ 나는 PriorityQueue 와 BFS 를 사용해서 풀었다. queue 에 넣는 값에는 sum 과 cnt 를 사용하였다. cnt 는 n-5 또는 n-3 했을 때 각각 cnt+1 이 되도록 했고, sum 은 n-5 또는 n-3 된 값을 넣어두었다(사실 변수명이 sum 말고 minus 로 설정해야될 것이다). 이후 sum 과 cnt 를 queue에 넣어서 보다 작은 sum 값이 먼저 나오도록 만든다. 이를 통해서.. Java - 알고리즘 2022. 8. 29. Spring Boot Web Chatting : 스프링 부트로 실시간 채팅 만들기(1) stomp, socketjs, websocket 각 브렌치 및 포스팅 별 내용- 일반 채팅 : master => 2 ~더보기2022.09.01 - [토이 프로젝트/Spring&Java 갖고놀기] - Spring Boot Web Chatting : 스프링 부트로 실시간 채팅 만들기(2) chatDTO, DAO, Socket.js 코드 알아보기 - 시그널링 서버를 구현한 화상채팅 & 화면 공유(P2P) : master-webrtc-jpa => 6~7 번 포스팅더보기2022.10.29 - [토이 프로젝트/Spring&Java 갖고놀기] - Spring Boot Web Chatting : 스프링 부트로 실시간 채팅 만들기 (6) WebRTC 를 이용한 실시간 화상 채팅 구현하기(feat. https 인증서 적용) - Kurento 미디어 서버를 활용한 화상채.. 토이 프로젝트/Spring&Java 갖고놀기 2022. 8. 29. 백준 - 1238 파티 풀이 방법 다익스트라 알고리즘을 공부했기에...도전했던 문제ㅠㅠ 근데 '공부한 것' 과 공부한 것을 문제에 적용하는 것은 다르더라는 것을 깨달았다. 수학 공부하면서 공식을 아는 것과 적용하는게 다시 한번 느꼈달까ㅠㅠ 이 문제의 포인트는 각 마을에서 X 를 방문했다가 다시 X에서 각 마을로 돌아오는 것! 을 모두 계산해야한다는 점이다. 단순히 가는 것만 계산해서도 안되고, 집으로 오는 것만 계산해서도 안된다. 때문에 이 문제는 다익스트라 알고리즘을 총 2번 사용해서 답을 구하게 된다. 정확히는 X 에서 각 마을로 가는 최소 방문 비용을 구한 후 bakHome 에 저장하고, 각 마을에서 X 로 가는 최소 방문 비용을 구해서 goX 에 저장한다. 이때 X -> 각 마을 까지는 다익스트라를 이용하면 되는데, 각.. 카테고리 없음 2022. 8. 28. 이전 1 2 3 4 5 6 7 8 ··· 17 다음