5904번: Moo 게임 Moo는 술자리에서 즐겁게 할 수 있는 게임이다. 이 게임은 Moo수열을 각 사람이 하나씩 순서대로 외치면 되는 게임이다. Moo 수열은 길이가 무한대이며, 다음과 같이 생겼다. m o o m o o o m o o m o o o www.acmicpc.net 문제를 푸는데 있어서 핵심은, 1. 전체 수열을 구하려고 하지 않는다. 2. 필요한 위치를 상대적으로 찾는다. 두가지 상황을 염두에 두고 풀어야 합니다. 수열은 기본적으로 사이즈가 무한이고, 적당한 길이라고 하더라도 문자열로 표현하기 힘들 수 있습니다. 반면 그 크기는 규칙적이고, 좌우 대칭적인 부분도 있어서, 주어진 N이 패턴의 어느정도 위치에 있는지를 판단하는 방향으로 나아가야 합니다. 문제 코드 import java.io..
1417번: 국회의원 선거 첫째 줄에 후보의 수 N이 주어진다. 둘째 줄부터 차례대로 기호 1번을 찍으려고 하는 사람의 수, 기호 2번을 찍으려고 하는 수, 이렇게 총 N개의 줄에 걸쳐 입력이 들어온다. N은 50보다 작거나 같 www.acmicpc.net 기본적으로 과반수가 아닌, 가장 많은 득표를 얻어야 하는 조건이므로, 가장 많은 득표를 올린 사람의 표를 하나씩 자신의 득표로 옮기는 과정을 통해 쉽게 풀어낼 수 있습니다. 문제 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Collections; import java.util.PriorityQue..
2738번: 행렬 덧셈 첫째 줄에 행렬의 크기 N 과 M이 주어진다. 둘째 줄부터 N개의 줄에 행렬 A의 원소 M개가 차례대로 주어진다. 이어서 N개의 줄에 행렬 B의 원소 M개가 차례대로 주어진다. N과 M은 100보다 작거나 같 www.acmicpc.net 문제코드 import java.util.Scanner; public class boj2738 { public static void main(String[] args) { // 행렬의 크기 N, M이 주어진다. Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int m = sc.nextInt(); // 둘째줄부터 N개의 줄에 행렬 A의 원소 M개가 차례대로 주어진다. int[][] arr1 =..
11000번: 강의실 배정 첫 번째 줄에 N이 주어진다. (1 ≤ N ≤ 200,000) 이후 N개의 줄에 Si, Ti가 주어진다. (0 ≤ Si < Ti ≤ 109) www.acmicpc.net 문제 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Comparator; import java.util.PriorityQueue; import java.util.StringTokenizer; public class boj11000 { public int solution() throws IOException { BufferedReader reader = new..
7662번: 이중 우선순위 큐 입력 데이터는 표준입력을 사용한다. 입력은 T개의 테스트 데이터로 구성된다. 입력의 첫 번째 줄에는 입력 데이터의 수를 나타내는 정수 T가 주어진다. 각 테스트 데이터의 첫째 줄에는 Q에 적 www.acmicpc.net 💡 최대 힙과 최소 힙을 동시에 사용해서 푸는 문제입니다. 양쪽 힙에 동시에 데이터를 입력하되, 총 입력되었던 원소들을 기억하여 만약 이미 제거된 원소를 만난다면 추가로 제거 작업을 하는 방향으로 풀어야합니다. 문제 코드 package backjoon; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; pub..
WebSocket이란? 클라이언트와 서버간의 연결을 길게 유지하고, 이 연결을 통하여 서로에게 데이터를 전송할 수 있도록 해주는 통신 규약의 일종입니다. 서버에서 클라이언트에 데이터를 보낼 수 있다는 점에서 채팅, 알림 등의 기능을 제공하기 위해서 활용합니다. 클라이언트와 서버가 WebSocket 연결을 구성하는 과정 1. 클라이언트가 서버에게 HTTP 요청을 보내면서, WebSocket 통신을 사용하고자 하는 의도를 전달합니다. 이 의도는 HTTP Header Upgrade에 담겨 전송됩니다. 2. 서버가 클라이언트에게 WebSocket 통신의 지원여부에 따라 101 응답을 전송합니다. 101이란? Switching Protocols를 의미하는 Status Code입니다. 이후 서버와 클라이언트는 성공..