전체 글 205

[네트워크] SSL/TLS란? (+핸드쉐이킹 과정)

정의 HTTPS에서 클라이언트와 서버간 통신 전 SSL 인증서로 신뢰성 여부를 판단하기 위해 연결하는 방식 1. HTTP와 HTTPS HTTP (HyperText Transfer Protocol) 인터넷에서 데이터를 주고받기 위한 통신규약 HTTP는 정보를 텍스트 기반의 평문으로 주고받기 때문에 네트워크에서 정보를 탈취하거나 변조할 수 있는 보안 취약점이 존재함 그래서 나온게 HTTPS HTTPS (HyperText Transfer Protocol + Secure socket layer) 기본적인 사항은 HTTP와 거의 동일 HTTP 메시지에 포함되는 콘텐츠 정보에 암호화를 추가함 모든 요청과 응답 데이터는 네트워크로 보내지기 전 SSL 계층을 통해 암호화됨 HTTPS는 클라이언트와 서버간의 통신을 제 ..

[BaekJoon] 백준 7290번 _ 0 만들기 for JAVA

https://www.acmicpc.net/problem/7490 7490번: 0 만들기 각 테스트 케이스에 대해 ASCII 순서에 따라 결과가 0이 되는 모든 수식을 출력한다. 각 테스트 케이스의 결과는 한 줄을 띄워 구분한다. www.acmicpc.net 생각보다 어려웠던 문제였다. N이 9까지밖에 없어서 수식을 만드는건 완탐인게 자명한데 띄어쓰기일 때 숫자를 붙여야해서 굉장히 헷갈렸다. 그래서 ArrayList 써서 붙이기로함 로직 1. 완탐으로 ' ', '+', '-'를 N-1개 뽑는다. -> 백트래킹 사용 2. 숫자랑 연산자를 저장할 ArrayList를 각각 선언함 3. for문으로 연산자를 훑으면서 1은 숫자리스트에 미리 넣어놓고 그 다음부터 연산자와 숫자를 보면서 각자 리스트에 넣음 - ' ..

알고리즘/백준 2022.11.27

[네트워크] Circuit/Packet Switching 이란?

네트워크 상에서 데이터를 주고 받는 전달 방식이다. 스위칭 라우터가 경로를 지정하는 방법 라우터가 패킷을 처리할 때 크게 두 가지 작업을 수행함 경로 정보를 얻어 경로 정보 처리 정리된 경로 정보를 기반으로 패킷을 포워딩 포워딩 : 들어온 패킷의 헤더 정보를 이용하여 패킷 경로를 지정해 내보내는 작업 Circuit Switching vs Packet Switching Packet Switching 데이터를 패킷(packet)으로 쪼개서 보내는 방식 송신 측에서 모든 메시지를 일정한 크기의 패킷으로 분해해서 전송하고, 수신 측에서 이를 원래의 메시지로 조립하는 것 패킷 패킷에는 번호가 붙어있어서 쪼개서 보내서 무작위로 도착해도 순서를 다시 재구성할 수 있음 이러한 과정에서 패킷은 다음 라우터로 이동하기 위..

[BaekJoon] 백준 17136번 _ 색종이 붙이기 for JAVA

https://www.acmicpc.net/problem/17136 17136번: 색종이 붙이기 과 같이 정사각형 모양을 한 다섯 종류의 색종이가 있다. 색종이의 크기는 1×1, 2×2, 3×3, 4×4, 5×5로 총 다섯 종류가 있으며, 각 종류의 색종이는 5개씩 가지고 있다. 색종이를 크 www.acmicpc.net 생각보다 되게 어려움;;;; 왜냐? 무한루프 엄청 돌았다.ㅋㅋㅋㅋ 10x10이고 색종이도 1x1, 2x2, 3x3, 4x4, 5x5밖에 없어서 완탐이구나 했음 조금 생각해보면 무작정 큰걸 붙인다고 최선인건 아니라는걸 알 수 있다. 그래서 만약에 맵에서 1을 만났을 때 1x1, 2x2, 3x3, 4x4, 5x5 중에 하나를 붙일 테니까 각자 붙일 수 있는지 확인하고 붙이는 방식으로 백트래킹..

알고리즘/백준 2022.11.20

[BaekJoon] 백준 17825번 _ 주사위 윷놀이 for JAVA

https://www.acmicpc.net/problem/17825 17825번: 주사위 윷놀이 첫째 줄에 주사위에서 나올 수 10개가 순서대로 주어진다. www.acmicpc.net 백트래킹으로 풀었다. 생각보다 어려운 문제이다. 진짜로.... 윷놀이 판을 어떻게 설계할지가 제일 고민되는 문제였고 생각 없이 풀었더니 3번 테케에서 틀렸다~! 일반 계속 틀린 이유 1. hashMap 사용하고 value를 배열로 넣어놓았는데 get으로 value값을 받아오니 그 배열을 사용하면 map에 있는 value값도 바뀌었다. 배열이라서 그런가봄 것참;; 2. 이것때문에 코드 고쳤는데 이유를 생각 안하고 고쳤더니 같은 오류가 다시 발생함. 근데 이유를 몰랐기 때문에 저 이유일거라고 짐작을 못함 그래서 일일히 디버깅하..

알고리즘/백준 2022.11.20

[BaekJoon] 백준 16637번 _ 괄호 추가하기 for JAVA

https://www.acmicpc.net/problem/16637 16637번: 괄호 추가하기 첫째 줄에 수식의 길이 N(1 ≤ N ≤ 19)가 주어진다. 둘째 줄에는 수식이 주어진다. 수식에 포함된 정수는 모두 0보다 크거나 같고, 9보다 작거나 같다. 문자열은 정수로 시작하고, 연산자와 정수가 www.acmicpc.net 이 문제 생각보다 굉장히 어려웠다. ㄷㄷㄷ 머리야 돌아가!!! 순서 0. 저장할 때 숫자와 연산자를 따로 저장함 - dfs로 완전 탐색을 돌건데 괄호를 치거나 안치거나 둘 중 하나잖음 그래서 따로 재귀 타야함 - index로 훑을건 연산자! - 연산자 인덱스 0일 때 num 0,1과 함께 계산, 1일 때 num 1,2 계산.. 등등 - 첫 번째 숫자는 result에 미리 넣어놓는다..

알고리즘/백준 2022.11.13

[BaekJoon] 백준 19236번 _ 청소년 상어 for JAVA

https://www.acmicpc.net/problem/19236 19236번: 청소년 상어 첫째 줄부터 4개의 줄에 각 칸의 들어있는 물고기의 정보가 1번 행부터 순서대로 주어진다. 물고기의 정보는 두 정수 ai, bi로 이루어져 있고, ai는 물고기의 번호, bi는 방향을 의미한다. 방향 bi는 www.acmicpc.net 진짜 별거 아닌데 요즘 코로롱 때문에 알고리즘 며칠 쉬었더니 뇌가 굳어버려서 엄청 오래걸렸다. 핑계인가... 아무튼 특별할 것 없는 구현 + 백트래킹을 가미한 문제이다. 상어가 잡아먹을 수 있는 물고기가 여러마리이기 때문에 dfs로 모든 경우의 수를 확인해야 한다. 처음에 그냥 그리디하게 큰거 잡아먹다가... 아닌걸 깨닫고 백트래킹으로 바꾸는데 이게 물고기 움직임 -> 상어 움직..

알고리즘/백준 2022.11.13

[BaekJoon] 백준 3190번 _ 뱀 for JAVA

https://www.acmicpc.net/problem/3190 3190번: 뱀 'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. 게임 www.acmicpc.net 재미있는 시뮬레이션 문제였다~! 그냥 문제 그대로 풀면 된다. 나는 사과를 set에 넣고 방향을 바꾸는 구간은 map에 넣었다. 참고로 set 안에 배열 형태로 넣으면 비교를 못함. 예를 들어 set 형태로 만들고 set.add(new int[]{}) 이런 형태로 집어넣었다면 set.contains(new int[]{}) 형태로 비교가 안된다. 배열이니까 주소값이 다르기 때문에... 그래서 key를 만들..

알고리즘/백준 2022.11.06

[프로그래머스] 두 큐 합 같게 만들기 for JAVA

https://school.programmers.co.kr/learn/courses/30/lessons/118667 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제를 보고 약간 당황한 문제이다. 문제 자체의 이해는 쉽다. 문제를 보고 특정 알고리즘이 그닥 떠오르지 않았다. 이게 그리디하게 풀리지 않는다면.. 내가 풀 수 없는 어떤 알고리즘을 사용하는거거나 엄청난 수학 문제구나 생각함. 결론부터 말하자면 그리디가 맞았다. 두 큐가 숫자를 계속 옮겨갈건데 그리디하게 한쪽이 크면 작은 쪽으로 옮기는 방식을 선택했고 가장 고민했던 부분은 어떤 방법으로도 원소..

[BaekJoon] 백준 15644번 _ 구슬 탈출 3 for JAVA

구슬탈출2: https://ticssfm.tistory.com/185 [BaekJoon] 백준 13460번_구슬탈출 2 for JAVA https://www.acmicpc.net/problem/13459 13459번: 구슬 탈출 첫 번째 줄에는 보드의 세로, 가로 크기를 의미하는 두 정수 N, M (3 ≤ N, M ≤ 10)이 주어진다. 다음 N개의 줄에 보드의 모양을 나타내는 길이 M의.. ticssfm.tistory.com https://www.acmicpc.net/problem/15644 15644번: 구슬 탈출 3 첫 번째 줄에는 보드의 세로, 가로 크기를 의미하는 두 정수 N, M (3 ≤ N, M ≤ 10)이 주어진다. 다음 N개의 줄에 보드의 모양을 나타내는 길이 M의 문자열이 주어진다. 이..

알고리즘/백준 2022.10.30