응애개발자
article thumbnail
[Java] 백준 14465번 : 소가 길을 건너간 이유 5
코딩테스트/백준 2024. 5. 26. 20:54

문제https://www.acmicpc.net/problem/14465 접근 방법정상적으로 작동하는 연속 K의 신호등이 존재하려면 최소 몇개의 신호등을 수리해야하는지 구하는 문제이다.브루트포스로도 가능하지만 시간초과가 발생한다.따라서 투포인터로 시간을 줄일 수 있다.연속하는 구간이 고정되어 있으므로 슬라이딩 윈도우 기법을 사용한다.코드import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.StringTokenizer;public class Main { private static StringBuilder sb; private static BufferedReader br; private static Str..

article thumbnail
[Java] 백준 1644번 : 소수의 연속합
코딩테스트/백준 2024. 5. 26. 16:52

문제https://www.acmicpc.net/problem/1644 접근 방법N을 연속된 소수의 합으로 몇가지 방법이 있는지를 구하는 문제이다.따라서 소수를 에라토스테네스의체로 list에 넣어두었다.또한 연속된 수의 합은 사실 브루트포스로 가능하지만 시간초과가 발생하는것을 방지하기 위해 투포인터로 구했다.소수를 리스트에 넣어놨기 때문에 N이 400만일걸 예상하여 list.get(s)+list.get(e) 코드import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.ArrayList;import java.util.Arrays;import java.util.StringTokenizer;public class Main { ..

article thumbnail
[Java] 백준 22682번 : 가장 긴 짝수 연속한 부분 수열 (large)
코딩테스트/백준 2024. 5. 25. 21:10

문제https://www.acmicpc.net/problem/22862 접근 방법수열 에서 최대 K번 숫자를 지워서 제일 긴 짝수 수열을 만드는 문제이다.부르트포스로 셀 수 있지만 시간초과가 발생한다고 생각했다.따라서 투 포인터로 문제를 푸는 방식을 생각했다.포인터 S를 0 포인터 E를 0으로 두고 E를 경계선이라 생각하며 최대값을 교환해 주었다.코드import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.StringTokenizer;public class Main { private static StringBuilder sb; private static BufferedReader br; private s..

article thumbnail
[Java] 백준 2467번 : 용액
코딩테스트/백준 2024. 5. 25. 16:13

문제https://www.acmicpc.net/problem/2467 접근 방법음수인 알칼리 용액과 양수인 산성 용액을 더해서 0이랑 최대한 가까이 만드는 것이 문제다.따라서 브루트포스로 문제를 푼다면 N값이 10만이므로 시간초과가 발생할것을 생각했다.그래서 이 문제를 투포인터로 풀면 된다고 생각했다.코드import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.StringTokenizer;public class Main { private static StringBuilder sb; private static BufferedReader br; private static StringTokenizer st; ..

article thumbnail
[Java] 백준 1484번 : 다이어트
코딩테스트/백준 2024. 5. 25. 01:19

문제https://www.acmicpc.net/problem/1484 접근 방법브루트포스로 풀 수 있지만 그랬을 경우 O(N^2)으로 시간 초과가 발생한다.따라서 반복문을 줄일 수 있는 방법으로 투포인터를 생각했다.그리고 문제는 살이 찐 경우만 체크하면 된다. (값이 자연수이다.)따라서 포인터를 두고 앞에서부터 탐색하는 방법으로 문제를 풀었다.코드import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.StringTokenizer;public class Main { private static StringBuilder sb; private static BufferedReader br; private sta..

article thumbnail
[Java] 백준 3273번 : 두 수의 합
코딩테스트/백준 2024. 5. 25. 00:27

문제https://www.acmicpc.net/problem/3273 접근 방법a1+ a2가 X를 만족하는 수를 구하는 문제이다.브루트포스로 구하면 시간초과 O(N^2)가 발생하므로 반복문을 줄일 수 있는 투포인터를 이용하여 문제를 푼다. 코드import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.Arrays;import java.util.StringTokenizer;public class Main { private static StringBuilder sb; private static BufferedReader br; private static StringTokenizer st; private ..

article thumbnail
[Network] Stateless와 Connectionless
CS/Network 2024. 5. 24. 22:50

HTTP의 특성에 대해서 알아보자. 📌Stateless (무상태)Stateless는 서버가 클라이언트의 상태를 저장하지 않는 HTTP의 특징이다. 그렇다면 Stateful(상태유지)하면 안될까? 왜 HTTP는 무상태의 특성을 갖는지 알아보자.  확장성 (Scalability)서버가 각 클라이언트의 상태를 유지하지 않으므로, 클라이언트의 수가 증가하더라도 서버의 복잡성이 크게 증가하지 않는다.여러 서버에 트래픽을 분산시키기 쉬워진다. 클라이언트의 상태를 유지할 필요가 없기 때문에 로드 밸런서를 통해 요청을 여러 서버로 분산할 수 있다.단순성 (Simplicity)각 요청이 독립적이므로, 서버는 각 요청을 독립적으로 처리할 수 있다. 이는 서버 구현을 단순하게 한다.클라이언트와 서버 간의 인터랙션이 단순해..

article thumbnail
[Java] 백준 2003번 : 수들의 합 2
코딩테스트/백준 2024. 5. 23. 18:11

문제https://www.acmicpc.net/problem/2003 접근 방법만약 완전탐색으로 구할 경우 O(N^2) 시간 초과가 발생한다.따라서 N^2을 O(N) 으로 줄일 수 있는 투 포인터를 생각하여 문제를 구했다.s, e 둘다 0으로 시작하고, 값이 작으면 e를 증가, 값을 초과하면 s를 증가시켰다. 코드를 보는것이 더 이해하기 쉬울 것이다.코드import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.StringTokenizer;public class Main { private static StringBuilder sb; private static BufferedReader br; private..

article thumbnail
[Java] 백준 11728번 : 배열 합치기
코딩테스트/백준 2024. 5. 23. 17:11

문제https://www.acmicpc.net/problem/11728 접근 방법간단하게 Arrays.sort로 구하거나, PriorityQueue를 이욯하거나 해서 쉽게 구할 수 있었을 것이다.하지만 투포인터 방법으로 구해보았다.첫번째 배열에서 첫번째 항을 s 두번째 배열에서 첫번째 항을 e 로 두고 작은 부분을 Stringbuilder에 넣어주었다.두 배열중 먼저 끝 지점에 다다를시 배열 하나는 탐색이 다 완료가 되지 않았다는 말로 해당 포인터 부터 나머지 값을 넣어준다.근데 이 투포인터가 가능한 이유는 첫번째 배열과 두번째 배열이 모두 정렬이 되있기 때문에 가능한것이다. 만약 정렬되어 있지 않으면 불가능하다. (ex 첫번째 배열 1,4,2 두번째 배열 3)코드import java.io.Buffere..

article thumbnail
[Network] 3-Way Handshake란
CS/Network 2024. 5. 22. 02:12

3-Way Handshake는 TCP의 접속과정, 4-Way Handshake는 TCP 접속 해제 과정이지만 오늘은 접속 과정만 알아보겠다. 📌3-Way HandshakeTCP/IP 프로토콜을 이용해서 이용해서 응용프로그램은 데이터를 주고받기 전에 먼저 연결을 진행한다.(정확한 전송을 보장하기 위해)3-Way Handshake는 이 연결 과정을 의미한다.더보기TCP/IP 프로토콜은 하나의 프로토콜이 아닌 TCP와 IP를 합쳐서 부르는 말이다. TCP/IP를 사용하겠다는 것은 IP 주소 체계를 따르고 IP Routing을 이용해 목적지에 도달하여 TCP의 특성을 활용하여 송신자와 수신자의 논리적 연결을 생성하고 신뢰성을 유지할 수 있도록 하겠다는 것을 의미한다. 즉, 여기서 말하는 TCP/IP 프로토콜은..