1.SSL HandShake는 통신 전 SSL 인증서로 신뢰성 여부를 판단하기 위한 연결방식이다.

(1)클라이언트에서 "client hello" 메시지와 암호화된 정보를 서버로 보낸다. 
(2)클라이언트가 보낸 암호 알고리즘과 압축 방식을 통해 해독한다. 
(3)서버에서 "server hello" 메시지와 세션ID, CA 공개 인증서(선택)를 보낸다.
(4)클라이언트는 받은 CA가 유효한지 체크한다.
(5)클라이언트에서 서버 공개키를 통해 암호화된 대칭키를 보낸다.
(6)서버는 받은 대칭키를 개인키로 복호화한다.
(7)클라이언트에서 handshake 종료를 의미하는 finished 메세지를 보낸다.
(이전 교환내역을 대칭키로 암호화해 보낸다)
(8)클라이언트에서 받은 내용을 대칭키로 복호화한 다음 finished 메세지를 대칭키로 암호화해 보낸다.
(9)대칭키를 통해 데이터를 주고받는다.






(1).백준 11441 합 구하기는 대규모 데이터 처리를 다루는 것 같았다.
특정 구간의 합을 구하는 문제였는데 그 구간이 최대 10만개였으며
그 구간을 제시하는 테스트케이스도 최대 10만개였다.
단순 계산을 통해서는 최대 100억번의 연산이 필요했기 때문에
dp처럼 각 구간까지의 합을 sum 배열에 저장한 다음
1~10의 구간일 경우 sum[10]-sum[0]
5~17의 구간일 경우 sum[17]-sum[4]형태로 처리했다.
이를 통해 처음 n번의 연산을 통해 sum을 만들고
그 뒤로는 테스트 케이스 만큼의 연산을 통해 100억이 아닌
10만 근처의 연산으로 해결할 수 있게 처리했다.

let input = `3
1 0 -1
6
1 1
2 2
3 3
1 2
2 3
1 3`.split('\n')

let sum = [0]
let arr = input[1].split(' ').map(Number)
let result = []
for(let i = 0 ; i < arr.length ; i++){
    sum[i+1] = sum[i]+arr[i]
}
for(let i = 3 ; i < input.length ; i++){
    let [a,b] = input[i].split(' ').map(Number)
    result.push(sum[b]-sum[a-1])
}

console.log(result.join('\n'))



(2).프로그래머스 크기가 작은 부분문자열은 
지정된 숫자형 문자열과 같은 길이의 부분문자열의 크기를 비교해
지정 숫자보다 크지 않을 경우 카운팅을 추가하는 문제였다.
('123123124124','42'의 경우 2글자 '12','23''13'등이 42보자 작아야 한다)

부분 문자열이라고 하지만 조합식이 아닌 단순 slide 이동식이기 때문에
slice 범위를 1칸씩 옮기며 기존 숫자와 비교해 처리했다.

function solution(t, p) {
    let answer = 0;
    let now = ''
    let num = Number(p)
    for(let i = 0 ; i <= t.length - p.length ; i++){
        if(Number(t.slice(i,i+p.length)) <= num) answer++
    }
    return answer;
}

+ Recent posts