본문 바로가기

분류 전체보기

(64)
WebSocket WebSocket이란? WebSocket이란 프로토콜의 일종으로 서버와 클라이언트간에 Socket Connection을 유지함으로써 언제든 양방향 통신 또는 데이터 전송이 가능하도록 하는 기술이다. 이는 통상적으로 Client가 요청을 보내는 경우에 Server가 응답을 하는 단방향 통신인 HTTP와 다르게 실시간으로 클라이언트와 서버가 원할 때 데이터를 주고 받는다. 하여, 연속된 데이터를 빠르게 노출 할 수 있음으로 실시간 네트워킹이 필요한 채팅, 주식 등에 사용되어지고 있다. WebSocket 이전 기술 1. Polling 폴링이란 realTime 웹을 위한 기법으로, 일정한 주기를 가지고 서버와 응답을 주고 받는 방식을 말한다. 폴링은 일정한 주기를 통하여 이벤트를 감지함으로 통신 발생을 정확히 ..
백준 스타트와 링크(14889) 오늘은 백트래킹 문제를 풀어보았다. https://www.acmicpc.net/problem/14889 14889번: 스타트와 링크 예제 2의 경우에 (1, 3, 6), (2, 4, 5)로 팀을 나누면 되고, 예제 3의 경우에는 (1, 2, 4, 5), (3, 6, 7, 8)로 팀을 나누면 된다. www.acmicpc.net 해당 문제는 어떻게 푸는게 좋을지 생각을 해보자 1. A팀의 인원을 선별하게 되면 나머지는 자동적으로 B팀이라고 가정하면 된다. 2. A팀을 예시로 1 2 5로 뽑나, 5 2 1 로 뽑나 같은 경우의 수로 해당 중복 케이스는 진행하지 않는 방향으로 구성하면 된다. 하여 뽑힌 A팀의 인원의 능력치와 B팀의 능력치를 구하여 비교한 최소값을 해로 구하면 된다. import java.io...
Spring Boot Logback 설정 보통의 프로젝트에 log에 대한 properties는 이미 설정 되어 있는 경우가 많다. 필자의 경우도 기본적으로 세팅되어 있는 경우를 많이 사용하며 이후 해당 설정을 다시 활용하는 경우가 많다. 이번 기회에 Log에 대한 정리와 함께 프로젝트에 적용하였다 이전 포스팅에서 로그에 대한 정리를 진행했다. https://daliy-dev.tistory.com/31 Log4j, Logback, Log4j2 로그(Log)란? 소프트웨어 실행중 발생되는 행위와 상태 및 동작정보를 시간 경과에 따라 기록하는 데이터를 일컫는 말이다. 이러한 로그를 생성하는 과정을 "로깅(Logging)"이라 한다. Java에서는 다 daliy-dev.tistory.com 프로젝트 구성 - spring boot 현재 구성하고있는 채팅..
Log4j, Logback, Log4j2 정리 로그(Log)란? 소프트웨어 실행중 발생되는 행위와 상태 및 동작정보를 시간 경과에 따라 기록하는 데이터를 일컫는 말이다.이러한 로그를 생성하는 과정을 "로깅(Logging)"이라 한다. Java에서는 다양한 로깅 라이브러리를 지원을 하며, 각 로깅 라이브러리가 내부적으로 어떻게 동작하는지 모르면 성능 상 이슈를 발생시킬 수 있기에 상황에 맞게 라이브러리를 알고 사용하는것이 좋다. 로그를 사용하면 아래와 같은 장점을 가질 수 있다.상황별 LEVEL 지정을 통한 LEVEL 별 로깅 가능응용프로그램의 실행에 대한 흐름 및 에러 확인 가능모듈 별, 파열 별, 메소드 등 자유로운 출력 위치 및 다양한 출력 형식 지원프레임워크를 이용한 간단하고 쉬운 사용 환경 조성 가능 로깅 라이브러리의 종류java.util.l..
백준 나이트의 이동(7562) bfs문제를 풀어봤다. https://www.acmicpc.net/problem/7562 7562번: 나이트의 이동 체스판 위에 한 나이트가 놓여져 있다. 나이트가 한 번에 이동할 수 있는 칸은 아래 그림에 나와있다. 나이트가 이동하려고 하는 칸이 주어진다. 나이트는 몇 번 움직이면 이 칸으로 이동할 수 www.acmicpc.net 테스트케이스가 주어지며 현재 위치에서 타겟 위치까지 체스 이동시 가장 작은 비용을 구하는 문제이다 일단 움직일수 있는 방향을 배열로 정리한 후 테스트케이스별 bfs 함수 처리를 진행했다. 이 문제의 포인트는 방문기록이 있지만 비용이 낮게 들어온경우는 처리해주면서 가장낮은 비용을 구하는 계산이 될 거 같다. import java.io.BufferedReader; import j..
Spring Boot 정적 컨텐츠 처리 스프링 부트를 사용할 때 주로 Thymeleaf를 많이 사용한다 요즘 개발하고있는 프로젝트는 간단하게 Thymeleaf를 적용했다  Thymeleaf (타임리프)Thymeleaf는 웹 애플리케이션의 뷰(화면)를 생성하기 위한 자바 템플릿 엔진이다.Thymeleaf는 HTML, XML, JavaScript, CSS 등의 마크업 언어를 지원하며, 다른 템플릿 엔진들과 달리 뷰 템플릿 파일 자체도 유효한 마크업 문서이다. 이는 템플릿 파일이 개발자와 디자이너 모두에게 친숙한 문법으로 작성될 수 있도록 하는 장점이 있다. 또한 Thymeleaf는 서버 측에서 렌더링되므로 클라이언트 측에서 추가적인 로딩 없이 바로 렌더링 결과를 확인할 수 있다. 이를 통해 사용자 경험을 향상시키는데 도움이 된다.Thymeleaf..
백준 점프왕 쩰리 (Large)(16174) 간단한 DFS문제 풀었습니다. https://www.acmicpc.net/problem/16174 16174번: 점프왕 쩰리 (Large) 쩰리는 맨 왼쪽 위의 칸에서 출발해 (행, 열)로 나타낸 좌표계로, (1, 1) -> (2, 1) -> (3, 1) -> (3, 3)으로 이동해 게임에서 승리할 수 있다. www.acmicpc.net 오른쪽, 아래로 이동하면서 마지막 칸에 도달할 수 있는지 여부만 체크하면된다. 가는길에 방문 여부만 관리하면 된다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Mai..
백준 보드점프(3372) 오늘은 DP문제를 풀었다 https://www.acmicpc.net/problem/3372 3372번: 보드 점프 N × N 게임 보드에 양의 숫자들이 적혀있다. 목적은 왼쪽 위에서 오른쪽 아래까지 규칙에 맞게 점프를 해서 가는 것이다. 숫자들은 현재 점에서 갈 수 있는 거리를 의미한다. 반드시 오른쪽이나 www.acmicpc.net 문제는 크게 어렵지 않다 처음 시작점부터 점프가능한 부분의 영역을 DP해가면서 진행하면된다. 크기가 굉장히 큰편이기에 BigInteger를 사용했다. 처음에는 모두 0으로 초기화 안하고 NULL체크로 진행했는데 종착점을 0으로 초기화 하지않으면 통과하지 못하는 케이스가 있어 고전했다. 알고리즘은 쉽지만 조건이 약간 귀찮은 문제였다. import java.io.Buffered..
백준 블랙홀과 소행성(29755) 이분 탐색 문제를 풀어 보았다. https://www.acmicpc.net/problem/29755 29755번: 블랙홀과 소행성 첫 번째 줄에 블랙홀의 수 $N$과 소행성의 수 $M$이 공백으로 구분되어 주어진다. $(1 \le N, M \le 200\,000)$ 두 번째 줄에 $N$개의 정수 $b_1$, $b_2$, $\cdots$, $b_N$이 공백으로 구분되어 주어진다. $(-1\,000\,000 www.acmicpc.net 문제의 공식의 최소값을 구하는 문제이다. 공식을 잘 살펴보 |b-a| 해당 부분이 작을수록 최소값을 가질수 있는 것으로 보인다. 해당 값이 결국 작으려면 블랙홀과 행성의 거리 차가 가장 짧은 것을 찾으면된다. 각 행성별로 거리 차이 * 무게가 가장 높은게 최소 P 값이라고 생..
백준 국기 색칠하기(30702) 오늘의 문제는 DFS문제로 풀어봤다. https://www.acmicpc.net/problem/30702 30702번: 국기 색칠하기 세계의 여러 나라들은 자신의 나라를 상징하는 깃발인 국기가 있는데, 그중에는 색만 다르고 모양이 비슷한 국기들이 있다. 국기는 $N$행 $M$열의 격자판(행렬)으로 구성되어 있다. 격자판의 각 www.acmicpc.net 문제는 A국기를 B국기를 만들 수 있냐는 질문이었다. 해당 문제 풀이에 대해서 고민을 해본 결과 하나의 해답을 정했다. 풀이 메모리 제한이 굉장히 너프한 것을 보면 힌트를 얻을 수 있을 수 도 있다. 하나의 색으로 이루어 진 부분을 part라고 지칭하겠다. 문제는 A의 part가 B에 국기에 대조했을때 B국기에 해당 part의 색이 모두 똑같으면 된다. ..