본문 바로가기

분류 전체보기

(70)
백준 물통(2251) DFS 문제를 풀어보았다. https://www.acmicpc.net/problem/2251 2251번: 물통 각각 부피가 A, B, C(1≤A, B, C≤200) 리터인 세 개의 물통이 있다. 처음에는 앞의 두 물통은 비어 있고, 세 번째 물통은 가득(C 리터) 차 있다. 이제 어떤 물통에 들어있는 물을 다른 물통으로 쏟아 부 www.acmicpc.net 물통은 A B C개가 존재하며 물은 한통에서 다른 통으로 옮긴다라는 하나의 액션을 생각해보면 된다. 내가 현재 잡은 물통에 물이 있으면 나머지 통에 옮길수 있을만큼 옮기면 된다. 키 포인트 선택한 물통을 다른 물통으로 옮길 수 있는 만큼 옮기기 몰통들의 수량 케이스를 담아서 방문기록 유지하기 import java.io.BufferedReader; im..
백준 결전의 금요일(25194) DP 문제를 풀었다. https://www.acmicpc.net/problem/25194 25194번: 결전의 금요일 곰곰이는 올해도 운동하기를 신년 목표로 삼았지만, 지금까지 헬스장을 한 번도 가지 않았다. 운동하라고 잔소리하는 당신에게, 곰곰이는 금요일에 정확히 일을 끝마치는 시점이 있다면 헬스 www.acmicpc.net 금요일은 작업일%7 이 나머지가 4인경우를 구하면 된다. 작업일들의 모든 경우의수를 구하게 처음 구했다 시간초과가 발생되었다. 생각 가능한 범주로는 작업일기준으로 월화수목금토일만 관리하면된다. 그렇게 발생된 케이스에서 게속 DP를 진행하면된다. import java.io.BufferedReader; import java.io.IOException; import java.io.Inp..
백준 휴먼 파이프라인(22981) 그리디 알고리즘 문제를 풀어보았다. https://www.acmicpc.net/problem/22981 22981번: 휴먼 파이프라인 모든 상자를 최대한 빠르게 옮기는 경우의 작업 시간을 분 단위로 출력한다. www.acmicpc.net 문제를 보면 A, B 두팀의 합산으로 이루어진 분당 처리량을 구하면 될거 같다. 한팀은의 분당 처리량은 주어진 처리량값중에 가장 작은 값이다. 그 다음 처리량 값을 구하면 해당 해 기준으로 인원수 처리를 하면 된다. 해서 구할수 있는 점화식이 있었다. 분당 처리량 = (최대인원 - 선택인덱스) * 선택인덱스 처리량 + (선택인덱스 * 최소 처리량) 이 되겠다. K는 long 타입으로 주의해야한다. 계속 numberFormatException이 나오길래 뭔가했었다. imp..
백준 체스(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..