본문 바로가기

분류 전체보기

(67)
백준 체스(9204) 오늘은 BFS 문제를 풀어보았다. https://www.acmicpc.net/problem/9204 9204번: 체스 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 시작 위치 X와 도착 위치 Y가 주어진다. 각 위치는 두 글자가 공백으로 구분되어져 있다. 글자는 열, www.acmicpc.net BFS + 구현 문제라고 생각이 된다. 비숍이 움직일 수 있는 방향은 대각선이다 열을 숫자로 바꾸어 생각하면 배열로 손쉽게 풀수있다. 현재 위치에서 움직일수 있는 방향을 모두 담아서 움직이고 방문 기록을 기록하면된다. 최대 4번만 움직일 수 있으니 그부분을 주의하면서 움직였던 기록도 함께 저장하면서 움직여야한다 메모리 제한은 작기에 최대 4번만 움직이게만든 문제같다...
Spirnb WebSocket 서버 구현 WebSocket을 이용한 채팅 서버 구축 가장 일반적인 방식으로 먼저 채팅 서버를 구축해보겠다. 이전 포스팅에서 WebSocket, SockJs를 공부하고 소개했다 해당 부분을 이용하여 채팅서버를 구축하는데 목표를 가지고 진행을 했다. WebSocket https://daliy-dev.tistory.com/34 WebSocket WebSocket이란? WebSocket이란 프로토콜의 일종으로 서버와 클라이언트간에 Socket Connection을 유지함으로써 언제든 양방향 통신 또는 데이터 전송이 가능하도록 하는 기술이다. 이는 통상적으로 Client daliy-dev.tistory.com SockJs https://daliy-dev.tistory.com/35 WebSocket - SockJs WebS..
WebSocket - SockJs WebSocket의 한계 웹 소켓은 HTML5 이후에 나왔기에 HTML5 이전에 기술에는 적용이 어렵다. Firefox, Chrome, Edge, Whale 과 같은 브루아저에서는 동작을 하지만, 모바일 크롬, IE에서는 WebSocket이 동작하지 않으며, 모든 클라이언트와 브라우저에서 WebSocket을 보장해주지 못한다. Proxy 서버가 Upgrade 헤더를 해석하지 못할 수 있으며, 유휴 상태에서 자체적으로 connection을 종료시킬 수도 있다. 해결 방안 이를 해결 하기 위해서는 WebSocket Emulation을 이용한다 최초 WebSocket 연결을 시도하고, 실패 할 경우 HTTP Streaming, Long-polling 같은 HTTP 기반의 다른 기술로 전환하여 다시 연결을 시도..
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..