분류 전체보기
-
https에 사용되는 SSL/TLS 인증과정Security 2024. 2. 14. 16:26
현재 진행중인 프로젝트에서 nginx를 프론트 서버로도 사용하고 있지만(빌드된 프론트엔드 파일 배포), 추가적으로 백엔드 서버와의 http 통신을 리버스 프록시를 이용해 nginx가 담당해주고 있다. 이렇게하면 SSL/TLS 인증과정을 모두 nginx가 담당하게 되고, 백엔드 서버는 REST API 서버로 사용되며 서비스 처리에만 집중할 수 있게 된다. 이렇게 개발하면서, SSL/TLS 인증과정의 오버헤드가 얼마나 크길래 nginx에게 인증과정을 맡기는것이 더 빠른가? 라는 의문점이 생겼다. 사실 이 오버헤드는 대칭키/비대칭키 암호화 알고리즘 때문에 생기는 것이였는데, 그래서 이 과정에대해 간단하게 정리해보려 한다. SSL/TLS 인증 과정 전체적으로 요약해보면 서버-클라이언트간 비대칭키 암호화 방식을 ..
-
백준(BOJ) 22342 - 계산로봇Baekjoon 2023. 12. 21. 21:55
DP 문제였다. 생각보다 해당 셀의 저장값을 O(1) 시간만에 구하는것이 어려워보였다. 다만 그림을 그려보며 패턴을 파악하면 쉽게 알 수 있는 문제였다. 주요하게 필요한 것 1. 각 셀의 저장값을 알아낸다. 2. 알아낸 저장값을 이용해 최댓값을 갱신한다. 3. 저장값에 가중치를 더해 출력값을 구하고, 배열에 저장한다. 문제를 3단계의 과정으로 풀어낼 수 있다. 다만, 문제의 조건을 보면 N과 M의 범위가 1 = 0) subMax = Math.max(subMax, output[row - 1][col - 1]); subMax = Math.max(output[row][col - 1], subMax); if (row + 1 < N) subMax = Math.max(subMax, output[row + 1][co..
-
백준(BOJ) 25381 - ABBCBaekjoon 2023. 12. 13. 16:57
핵심 자료구조 : Queue ※ B와 C를 먼저 결합시켜 지워야 최대 횟수를 구할 수 있다. 문제에 나와있는 예시 2번을 보면 ABCBBACBABB가 예시로 나와있다. 만약 차례대로 생각해서 지워본다면 (AB)C(B)B(A)(C)(B)(AB)B 1 1 2 3 2 3 44 4개의 묶음밖에 만들지 못한다. 하지만 A가 B를 잘 선택해 결합해본다면 (A)(BC)(B)(B)(A)(C)(B)(AB)B 1 22 1 3 4 3 4 55 와 같이 5개의 묶음을 만들 수 있다. 이런 일이 발생하는 이유는, A가 선택하는 B의 가치 때문이다. 여기서 말하는 가치의 높고 낮음은, B가 C와 결합 될 가능성에 달려있다. 예시를 보자. ABCB 1 2 3 4 각 문자에 인덱스를 달아둔 예시이다. 여기서 1번 B와, 2번 4번에..
-
백준(BOJ) 25401 - 카드바꾸기Baekjoon 2023. 12. 7. 19:35
생각보다 어려운 문제였다. 카드들이 나열되어있고, 나열된 카드들의 숫자를 최소한으로 바꿔 등차수열을 만들거나/ 모두 같은 수로 만드는 것. 이 때 최소한의 교환 횟수를 출력해야한다. 사실 모두 같은 수로 만든다는 것은, 등차가 0인 수열로 만든다는 뜻도 된다. 따라서 최소한의 교환 횟수로 등차수열을 만든다고 생각하면 된다. 처음 풀 때 당연하게 생각하지만 놓치기 쉬운 부분이 하나 있었다. => 카드의 자리는 바꿀 수 없다. 각 카드에는 번호가 매겨져있다. 유의하자. 1. 두 수를 선택하고, 해당 두 수에 맞춰 등차수열로 만든다.(정답) 한 문장만 보면 이해하기 어려운데, 예를 들어보자. 수열 1 3 8 11 13가 있다고 가정한다. 여기서 두 개의 수를 선택해야 하는데, 3과 11을 선택했다고 가정해본다..
-
2.1 네트워크 기초CS 2023. 9. 10. 16:59
네트워크 기초 네트워크는, 노드와 링크가 서로 연결되어 있거나 연결되어 있으며 리소스를 공유하는 집합을 의미한다. 노드 : 서버, 라우터, 스위치 등 네트워크 장치(IP를 가짊) 링크 : 유선, 무선 1. 처리량과 지연시간 처리량 : 링크 내에서 성공적으로 전달된 데이터의 양. 단위 수는 bps(bits per second) 처리량은 트래픽, 네트워크 장치 간 대역폭, 네트워크 중간에 발생하는 에러, 장치의 하드웨어 스펙에 영향을 받음. 트래픽 : 링크 내에서 흐르는 데이터. 처리 -> 트래픽을 처리하면 처리량이 늘어나는 것. 처리량이 늘어났다 -> 처리되는 트래픽이 많아졌다. 대역폭 : 주어진 시간 동안 네트워크 연결을 통해 흐를 수 있는 최대 비트 수. 대역폭이 크다면, 더 많은 트래픽이 링크 내로 ..
-
1092 - 배Baekjoon 2023. 9. 7. 08:58
정답 아이디어 1. 크레인을 들 수 있는 무게에따라 역순 정렬, 박스도 역순 정렬 한다. 2. 역순 정렬 된 크레인을 앞에서부터 선택하며, 자신이 가질 수 있는 가장 큰 크기의 박스를 옮긴다. 3. 이 때 크레인이 박스를 옮기게 되면, 해당 크레인 idx를 1 늘려주고 다음 박스로 넘어간다. Try 1. 메모리초과 (1%) import java.util.*; import java.io.*; class Main { public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int N = Integer.parseInt(br.read..
-
14502 - 연구소Baekjoon 2022. 12. 28. 17:28
1. 서론 4방향 bfs 문제이다. N, M의 범위가 8이고, 벽의 개수가 3으로 정해져 있어 어렵지 않게 풀 수 있었다. 완전탐색을해도 재귀의 깊이가 3밖에 되지 않으므로, 벽/바이러스가 하나도 없다고 생각하고 벽을 3개 세운다고 하더라도 64C3번의 연산만 하면 된다.(=41664회) 2. 풀이 문제에서 중요하게 생각해야될것은 하나이다. 벽을 세운 후, 바이러스가 퍼지는것을 구현하고 안전영역의 개수를 구해야 한다. 이 때, 바이러스가 퍼지는것은 경우의 수 때 마다 다르므로 기존맵을 복사한 후 각각 사용해야 한다. -> 바이러스가 퍼질 때는 기존 맵에 3개의 벽을 세운 후이다. 따라서 재귀 깊이 3에 도달했을 때, 기존 맵을 복사해 새로운 맵을 만든 후 해당 맵에서 bfs를 통해 바이러스가 퍼져나가는것..
-
1074 - ZBaekjoon 2022. 12. 7. 12:36
1. 서론 분할정복 문제이다. 완전탐색 할 경우 연산 횟수는 2^15 * 2^15인데 약 10억이므로 완전탐색으로 푼다면 시간초과가 나는 문제이다. 처음에 문제 이해를 잘못해서, 푸는데 애를 먹었다. 예시만 보고나서는, 2^N-1 * 2^N-1 크기의 박스 4개로 나눈 후, 각 박스별로 z형태로 2*2크기씩 진행하는것으로 이해했다. 좌측이 문제에서 요구하는 답안이고, 오른쪽이 처음에 잘못 이해했던 진행 방식이다. 복사 붙여넣기로 만든 이미지이므로 숫자는 빼고 어떤 방식으로 진행되는지만 보면 된다. 잘못된 예시를 다 그리지는 않았다. 그래서 4번이나 틀린 후에야.. 애초에 문제에서 요구하는 방식의 풀이가 아니란것을 깨달았다. 이해하고나서는, 알고리즘이 어렵지는 않았다. Top-down 방식으로 반복문을 이..