본문 바로가기

분류 전체보기159

[자료구조/Java] 퀵 정렬(Quick Sort) youtu.be/7BDzle2n47c 시간 복잡도 한 값을 기준으로(pivot) 왼쪽은 그보다 작은 것, 오른 쪽은 그보다 큰 것으로 정렬한다. 시간 복잡도는 평균적으로는 O(nlogn), 최악의 경우 O(n^2)이다. O(nlogn) - 배열이 1개가 될 때까지 계속 나눈다. (n번) - 나눌 때마다 데이터가 절반씩 줄어든다. (logn) O(n^2) - 정한 pivot이 맨 끝의 값만 선택할 경우이다. 코드 설명 pivot을 기준으로 start point인 s, end point인 e를 정한다. 변수 s - pivot보다 작을 경우 hold - pivot보다 클 경우, e가 pivot보다 작을 경우 swap - pivot보다 클 경우, e가 pivot보다 클 경우 e의 위치를 하나 앞으로 당긴다. (.. 2020. 8. 19.
로드 밸런싱 (Load Balancing) 로드 밸런싱 둘 이상의 CPU 또는 저장장치와 같은 컴퓨터 자원들에게 작업을 나누는 것이다. - 대용량의 트래픽을 감당하기엔 1대의 서버로는 부족하다. 대응방안? 1) Scale-up : 하드웨어의 성능을 올린다. 하드웨어 향상 비용이 비싸다. 2) Scale-out : 여러대의 서버가 나눠서 일하도록 한다. - Scale-out의 경우, 하드웨어 향상 비용보다 서버 한 대의 추가 비용이 더 저렴하며, 여러 Server 덕분에 무중단 서비스를 제공할 수 있다. → 여러 서버에게 균등하게 트래픽을 분산시켜 주는 것을 로드 밸런싱이라고 한다. - 로드 밸런서(Load Balancer) 분산식 웹 서비스로, 여러 서버에 부하(load)를 나누어 주는 역할을 한다. - 로드 밸런서를 클라이언트와 서버 사이에 두.. 2020. 8. 17.
HTTP & HTTPS HTTP(Hypertext Transfer Protocol) - 인터넷 상에서 클라이언트와 서버가 지원을 주고 받을 때 쓰는 통신 규약이다. - 서로 다른 시스템들 사이에서 통신을 주고받게 해주는 가장 기초적인 프로토콜이다. - HTTP는 텍스트 교환이므로 누군가 네트워크에서 신호를 가로채면 내용이 노출되는 보안 이슈가 존재한다. - 이런 보안 문제를 해결해 주는 프로토콜이 HTTPS이다. HTTPS(Hypertext Transfer Protocol Secure) - 인터넷 상에서 정보를 암호화하는 SSL(Secure Socket Layer) 프로토콜을 사용해 클라이언트와 서버가 자원을 주고 받을 때 쓰는 통신 규약이다. - HTTPS는 http 메세지(텍스트)를 암호화 하는 것이다. - HTTPS의 S.. 2020. 8. 17.
암호화 알고리즘 (대칭키 암호 vs 공개키 암호) 암호화 알고리즘 1) 대칭 키 암호(Symmetic-key algorithm) = 비밀키 암호 - 암호화와 복호화에 같은 암호키를 쓰는 알고리즘 (비밀 키 하나만을 가짐) - 하나의 비밀키를 양쪽(Client & Server)가 모두 같이 사용 - 암호화를 하는 측과 복호화를 하는 측이 같은 암호 키를 공유해야 한다. (공개키 암호에서 공개키와 비밀키를 별도로 가지는 것과 구별됨) - 대부분의 대칭 키 암호는 공개키 암호와 비교하여 계산 속도가 빠르다. - 비밀키 하나만 알아내면 암호화된 내용을 해독 가능 (안전하지 X) - 대칭키 기법을 사용하는 암호 알고리즘 방식 : DES, 3-DES, AES, SEED, ARIA, MASK 등 2) 공개 키 암호(public-key cryptography) = 비.. 2020. 8. 17.
TCP 프로토콜 & UDP 프로토콜 (TCP Protocol & UDP Protocol) 1. TCP/IP 4 계층 TCP/IP란 인터넷 프로토콜 스위트(IP Suite, 인터넷과 관련된 프로토콜 T집합)를 의미하며, OSI 7 계층을 4 계층으로 단순화한 모델이다. * 계층화하는 이유? 계층별로 담당하는 역할을 나눠 계층에 존재하는 각 프로토콜의 독립성을 보장해 각자의 기능만을 충실히 하도록 하기 위함이다. 문제가 발생했을 때에도 해당 계층을 파악하면 해결이 더욱 쉬워진다. 2. TCP 프로토콜 vs. UDP 프로토콜 전송 제어 프로토콜(Transmission Control Protocol)은 인터넷 프로토콜 스위트(IP Suite)의 핵심 프로토콜 중 하나로, IP와 함께 TCP/IP라는 명칭으로 널리 불린다. TCP 프로토콜은 연결 지향 프로토콜이다. TCP 프로토콜에서는 데이터 송수신.. 2020. 8. 15.
[Java/프로그래머스] 문자열 압축 문제 https://programmers.co.kr/learn/courses/30/lessons/60057 코딩테스트 연습 - 문자열 압축 데이터 처리 전문가가 되고 싶은 어피치는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문자 programmers.co.kr 시행착오 중첩된 for문의 기준을 어떻게 두어야 할지 많이 헷갈렸다... 덧셈보다 곱셈으로 하는 것이 횟수가 깔끔하게 떨어질 것 같았음 코드 class Solution { public int solution(String s) { int answer = 1000; int s_len = s.length(); int grouping_len = s.lengt.. 2020. 8. 15.
[Java/프로그래머스] 카카오프렌즈 컬러링북 문제 https://programmers.co.kr/learn/courses/30/lessons/1829 코딩테스트 연습 - 카카오프렌즈 컬러링북 6 4 [[1, 1, 1, 0], [1, 2, 2, 0], [1, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 3], [0, 0, 0, 3]] [4, 5] programmers.co.kr 풀이 DFS로 풀었다. 코드 import java.util.*; class Solution { public int[] solution(int m, int n, int[][] picture) { int[] answer = new int[2]; boolean[][] visited = new boolean[m][n]; for(int i=0; i 2020. 8. 15.
[자료구조/Java] Graph 검색 DFS, BFS 구현 https://www.youtube.com/watch?v=_hxFgg7TLZQ 따르고 싶은 유튜브 선생님이 생겼다.......... 1. BFS : 넓이 우선 탐색 1) Queue로 구현 가능 시작 노드 하나를 큐에 넣고 시작 → 큐에서 하나 꺼내고 → 해당 노드의 자식 노드들을 하나씩 큐에 넣음 → 처음에 넣은 노드를 출력 → (큐가 빌 때까지 반복) 2. DFS : 깊이 우선 탐색 1) Stack으로 구현 가능 스택에 노드를 하나 넣고 시작 → 스택에서 노드를 꺼내고 → 자식 노드들을 넣고 → 꺼낸 노드를 출력 → (스택이 빌 때까지 반복) 2) 재귀 호출로 구현 가능 노드에 방문하면 우선 출력 → 자식들을 재귀로 호출 내용 정리 import java.util.LinkedList; import jav.. 2020. 8. 14.
[Java/프로그래머스] 멀쩡한 사각형 문제 https://programmers.co.kr/learn/courses/30/lessons/62048 코딩테스트 연습 - 멀쩡한 사각형 가로 길이가 Wcm, 세로 길이가 Hcm인 직사각형 종이가 있습니다. 종이에는 가로, 세로 방향과 평행하게 격자 형태로 선이 그어져 있으며, 모든 격자칸은 1cm x 1cm 크기입니다. 이 종이를 격자 선을 �� programmers.co.kr 풀이 참고 : https://velog.io/@ajufresh/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EB%A9%80%EC%A9%A1%ED%95%9C-%EC%82%AC%EA%B0%81%ED%98%95-%EB%AC%B8%EC%A0%9C%ED%92%80%EC%9D%B4.. 2020. 8. 12.