본문 바로가기

분류 전체보기

(64)
백준 준규와 사과(5913) 오늘은 백트래킹 문제를 풀었다. https://www.acmicpc.net/problem/5913 5913번: 준규와 사과 대학교를 졸업한 준규는 농부의 꿈을 이루기 위해서 가로 5m, 세로 5m 크기의 땅을 구입했다. 준규는 땅을 가로 1m, 세로 1m 크기로 구역을 나누었다. 가장 왼쪽 위 칸은 (1,1)이고 가장 오른쪽 아래 www.acmicpc.net 장애물을 제외하고 모든 경우를 진행해야하는 케이스이다 문제 조건중에서는 두 명의 포인트가 동등하게 움직여서 모든 경우를 채워야하는 조건이 붙어있다. 장애물을 제외하고 모든 경우를 지나가야한다 두 포인트가 동등하게 움직여 모이는 포인트를잡아야한다 필자의 풀이는 k는 짝수로 각 포인트가 움직여야하는 거리를 계산 0,0 포인트에서 해당 거리를 움직인 이후..
백준 십자뒤집기(10472) bruteforcing 문제를 풀어보았다. https://www.acmicpc.net/problem/10472 10472번: 십자뒤집기 당신에게 3x3 크기의 보드가 주어진다. 각각의 칸은 처음에 흰색 혹은 검은색이다. 만약 당신이 어떤 칸을 클릭한다면 당신이 클릭한 칸과 그 칸에 인접한 동서남북 네 칸이 (존재한다면) 검은색 www.acmicpc.net 인접한 블록들을 내가 클릭했을 때 변경되는 문제이다. 해당 수를 클릭하였을때 인접한 블록들의 상태를 변경해준다. 클릭하지 않고 지나간다. 두 가지 방식으로 총 9개의 블록을 지나갔을때 블록이 전부가 하얀색이 되는지 확인하면 된다. import java.io.BufferedReader; import java.io.IOException; import jav..
백준 회장뽑기(2660) 최단거리 문제를 풀었다 https://www.acmicpc.net/problem/2660 2660번: 회장뽑기 입력의 첫째 줄에는 회원의 수가 있다. 단, 회원의 수는 50명을 넘지 않는다. 둘째 줄 이후로는 한 줄에 두 개의 회원번호가 있는데, 이것은 두 회원이 서로 친구임을 나타낸다. 회원번호는 1부터 www.acmicpc.net 문제를 해독력이 생각보다 필요한 문제였다. 친구의 친구 .. 의 의미는 결국 현재 노드로부터 최단거리로 가장 멀리느있는 노드 결국 시작 위치 노드에서 가장 멀리 있는 노드의 거리가 가장 작은것을 조회하면 되는 문제였다. 조금 구현에 가까운 문제였다 import java.io.BufferedReader; import java.io.IOException; import java...
백준 좋다(1253) 이분 탐색 문제를 풀어보았다. https://www.acmicpc.net/problem/1253 1253번: 좋다 첫째 줄에는 수의 개수 N(1 ≤ N ≤ 2,000), 두 번째 줄에는 i번째 수를 나타내는 Ai가 N개 주어진다. (|Ai| ≤ 1,000,000,000, Ai는 정수) www.acmicpc.net 투포인터로 문제를 해결 할 수 있었다. 정렬된 수를 가지고 선택한 수를 투포인트 진행하며 가능여부를 체크하면된다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.HashMap; import java.ut..
백준 물통(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 기반의 다른 기술로 전환하여 다시 연결을 시도..