1. WebSocket 이전의 양방향 통신 방법 (1) Polling 방식 클라이언트가 서버에서 HTTP Request를 주기적으로 요청하고, 서버가 응답하는 방식이다. 클라이언트가 주기적으로 요청을 하기 때문에 클라이언트의 수가 증가하면 요청의 수도 함께 증가하기 때문에 서버의 부담이 커진다. 또한, 요청과 응답후에는 연결이 끊어지기 때문에 요청할 때마다 항상 연결을 맺는 과정이필요하다. 이 부분에서 많은 비용이 소모된다. (2) Long Polling 방식 클라이언트가 서버에 HTTP Request를 요청하면, 서버는 대가하고 있다가 이벤트가 발생했을 때, 클라이언트에게 응답을 하는 방식이다. Polling 처럼 불필요한요청에 계속 응답하는 것이 아니기 때문에 요청에 따른 커넥션 맺는 과정에서 발생하..
프로그래머스 2단계 주식가격 문제 url : https://programmers.co.kr/learn/courses/30/lessons/17687?language=java 문제설명튜브가 활동하는 코딩 동아리에서는 전통적으로 해오는 게임이 있다. 이 게임은 여러 사람이 둥글게 앉아서 숫자를 하나씩 차례대로 말하는 게임인데, 규칙은 다음과 같다. 숫자를 0부터 시작해서 차례대로 말한다. 첫 번째 사람은 0, 두 번째 사람은 1, … 열 번째 사람은 9를 말한다.10 이상의 숫자부터는 한 자리씩 끊어서 말한다. 즉 열한 번째 사람은 10의 첫 자리인 1, 열두 번째 사람은 둘째 자리인 0을 말한다.이렇게 게임을 진행할 경우, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 0, 1, 1, 1, 2,..
1. Java 구현 (1) 처음 구현 - 완전 실패 import java.io.*; import java.util.ArrayList; import java.util.List; public class Main { public static void main(String[] args) throws NumberFormatException, IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); int n = Integer.parseInt(br.readLine()); int cn..
프로그래머스 3단계 등굣길 문제 url : https://programmers.co.kr/learn/courses/30/lessons/42898?language=java 문제설명계속되는 폭우로 일부 지역이 물에 잠겼습니다. 물에 잠기지 않은 지역을 통해 학교를 가려고 합니다. 집에서 학교까지 가는 길은 m x n 크기의 격자모양으로 나타낼 수 있습니다. 가장 왼쪽 위, 즉 집이 있는 곳의 좌표는 (1, 1)로 나타내고 가장 오른쪽 아래, 즉 학교가 있는 곳의 좌표는 (m, n)으로 나타냅니다. 격자의 크기 m, n과 물이 잠긴 지역의 좌표를 담은 2차원 배열 puddles이 매개변수로 주어질 때, 학교에서 집까지 갈 수 있는 최단경로의 개수를 1,000,000,007로 나눈 나머지를 return 하도록 ..
프로그래머스 3단계 정수삼각형 문제 url : https://programmers.co.kr/learn/courses/30/lessons/43105?language=java 문제설명위와 같은 삼각형의 꼭대기에서 바닥까지 이어지는 경로 중, 거쳐간 숫자의 합이 가장 큰 경우를 찾아보려고 합니다. 아래 칸으로 이동할 때는 대각선 방향으로 한 칸 오른쪽 또는 왼쪽으로만 이동 가능합니다. 예를 들어 3에서는 그 아래칸의 8 또는 1로만 이동이 가능합니다. 삼각형의 정보가 담긴 배열 triangle이 매개변수로 주어질 때, 거쳐간 숫자의 최댓값을 return 하도록 solution 함수를 완성하세요. 제한사항삼각형의 높이는 1 이상 500 이하입니다. 삼각형을 이루고 있는 숫자는 0 이상 9,999 이하의 정수입..
프로그래머스 3단계 타일 장식물 문제 url : https://programmers.co.kr/learn/courses/30/lessons/43104?language=java 문제설명대구 달성공원에 놀러 온 지수는 최근에 새로 만든 타일 장식물을 보게 되었다. 타일 장식물은 정사각형 타일을 붙여 만든 형태였는데, 한 변이 1인 정사각형 타일부터 시작하여 마치 앵무조개의 나선 모양처럼 점점 큰 타일을 붙인 형태였다. 타일 장식물의 일부를 그리면 다음과 같다. 그림에서 타일에 적힌 수는 각 타일의 한 변의 길이를 나타낸다. 타일 장식물을 구성하는 정사각형 타일 한 변의 길이를 안쪽 타일부터 시작하여 차례로 적으면 다음과 같다. 지수는 문득 이러한 타일들로 구성되는 큰 직사각형의 둘레가 궁금해졌다. 예를 들어..
프로그래머스 3단계 이중우선순위큐 문제 url : https://programmers.co.kr/learn/courses/30/lessons/42584?language=java 문제설명I 숫자: 큐에 주어진 숫자를 삽입합니다.D 1: 큐에서 최댓값을 삭제합니다.D -1: 큐에서 최솟값을 삭제합니다. 이중 우선순위 큐가 할 연산 operations가 매개변수로 주어질 때, 모든 연산을 처리한 후 큐가 비어있으면 [0,0] 비어있지 않으면 [최댓값, 최솟값]을 return 하도록 solution 함수를 구현해주세요. 제한사항operations는 길이가 1 이상 1,000,000 이하인 문자열 배열입니다. operations의 원소는 큐가 수행할 연산을 나타냅니다.원소는 “명령어 데이터” 형식으로 주어집니다...
프로그래머스 3단계 디스크컨트롤러 문제 url : https://programmers.co.kr/learn/courses/30/lessons/42627?language=java 문제설명하드디스크는 한 번에 하나의 작업만 수행할 수 있습니다. 디스크 컨트롤러를 구현하는 방법은 여러 가지가 있습니다. 가장 일반적인 방법은 요청이 들어온 순서대로 처리하는 것입니다. - 0ms 시점에 3ms가 소요되는 A작업 요청- 1ms 시점에 9ms가 소요되는 B작업 요청- 2ms 시점에 6ms가 소요되는 C작업 요청 - A: 3ms 시점에 작업 완료(요청에서 종료까지 : 3ms)- C: 2ms부터 대기하다가, 3ms 시점에 작업을 시작해서 9ms 시점에 작업 완료(요청에서 종료까지 : 7ms)- B: 1ms부터 대기하다가..
프로그래머스 3단계 라면공장 문제 url : https://programmers.co.kr/learn/courses/30/lessons/42629?language=java 문제설명라면 공장에서는 하루에 밀가루를 1톤씩 사용합니다. 원래 밀가루를 공급받던 공장의 고장으로 앞으로 k일 이후에야 밀가루를 공급받을 수 있기 때문에 해외 공장에서 밀가루를 수입해야 합니다. 해외 공장에서는 향후 밀가루를 공급할 수 있는 날짜와 수량을 알려주었고, 라면 공장에서는 운송비를 줄이기 위해 최소한의 횟수로 밀가루를 공급받고 싶습니다. 현재 공장에 남아있는 밀가루 수량 stock, 밀가루 공급 일정(dates)과 해당 시점에 공급 가능한 밀가루 수량(supplies), 원래 공장으로부터 공급받을 수 있는 시점 k가 주어질 ..
1. 인덱스 레인지 스캔 쿼리 : SELECT * FROM emp WHERE FIRST_NAME BETWEEN 'EBBE' AND 'GAD'; 인덱스 레인지 스캔은 루트 노드로부터 비교를 시작해 리프노드에 도달하여, 리프노드의 시작위치부터 순차적으로 읽는 방식이다. 그리고 범위에 마지막에 해당하는 데이터의 주소를 찾을 때까지 스캔하는 방식이다. 최종적인 데이터까지 스캔을 하면 데이터를 사용자에게 반환하고 쿼리를 종료한다. 리프노드에서 최종 데이터의 주소를 발견하면주소를 통해 데이터 파일을 읽어온다. 그리고 데이터를 파일에서 데이터를 읽는 것은 랜덤 I/O 이다. 만약 최종적으로 찾는 데이터가 5개라면, 5번의 랜덤I/O가 발생하는 것이다.인덱스를 통해 해당 데이터의 주소를 찾는 것이 비용이 많이 들지는 ..