TLS를 사용해 암호화된 연결을 하는 HTTP(HTTP Secure)
http와는 달리 암호화 되었기 때문에 비교적 안전하다.
기본 포트가 80번인 http와 달리 443번 포트를 사용한다.
기존의 HTTP는 텍스트 데이터를 주고받는 방식의 특성상 누군가 중간에서 신호를 가로챌 경우 내용이 노출된다. (마치 지난 JWT 로그인 방식 이전의 쿠키 방식 처럼)
HTTPS는 이런 기존의 방식을 보완해 주고받는 데이터를 암호화해 주고받는데, 두가지의 키를 사용해 서버와 클라이언트간 주고받는 데이터의 암호화, 복호화가 반복되는 식이다.
https://jeong-pro.tistory.com/89
https://programmers.co.kr/learn/courses/30/lessons/12934
function solution(n) {
let answer = 0;
let x = Math.sqrt([n]) ;
Math.sqrt([n]) % 1 == 0 ? answer = (x+1)*(x+1) : answer = -1
return answer;
}
알아서 제곱근을 구해주는 함수 Math.sqrt()...
x가 양의 정수 n의 제곱근이라면, x를 1로 나누었을 때 나머지가 없이 몫으로 딱 나누어 떨어질 것이다.
x를 1로 나누었을 때의 나머지가 0일 경우, 문제대로 (x+1)을 제곱해주고, 0이 아닐 경우 -1을 리턴하도록 한다.
https://programmers.co.kr/learn/courses/30/lessons/12935
function solution(arr) {
if(arr.length == 1) {
return [-1];
}
let min = Math.min(...arr);
let arridx = arr.indexOf(min);
arr.splice(arridx, 1);
return arr;
}
먼저 주어진 배열에서 가장 작은 수를 뺐을 때 배열 내에 더이상 남은 요소가 없을 경우, 즉 arr의 길이가 1일 경우 바로 [-1]을 리턴한다.
그 외의 경우, arr 함수 내에서 가장 작은 수를 찾아 해당 요소의 인덱스, 위치를 찾아 삭제한다.
splice() 하나로 배열 내의 요소를 삭제하거나, 교체하거나, 추가하는 것 까지 모든 일을 할 수 있다;
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/splice
https://programmers.co.kr/learn/courses/30/lessons/12943
1-1. 입력된 수가 짝수라면 2로 나눕니다.
1-2. 입력된 수가 홀수라면 3을 곱하고 1을 더합니다.
2. 결과로 나온 수에 같은 작업을 1이 될 때까지 반복합니다.
function solution(num) {
let answer = 0;
for (let i = 0; i < 500; i++) {
if(num!==1){
num%2 == 0? num = num/2 : num = num*3+1;
} else {
answer = i
return answer
}
}
return -1;
}
작업을 500번 이상 반복해도 1이 되지 않을 경우 -1을 리턴하도록 반복문을 최대 500번으로 제한한다.
1이 될때까지 수식을 반복하도록 조건문을 해당 반복문 안에 넣어 돌린다.
수식을 계속 반복해 결국 주어진 수가 1이 되었을 경우, 해당번째의 인덱스(작업 반복 횟수)를 리턴한다.
https://programmers.co.kr/learn/courses/30/lessons/12947
function solution(x) {
let answer = 0;
let xstr = x + '';
let sum = 0;
for(let i = 0; i < xstr.length; i++) {
sum += parseInt(xstr[i]);
}
x%sum == 0 ? answer = true : answer = false;
return answer;
}
먼저 주어진 양의 정수 x를 문자열로 만든다.
(빈 문자열을 더해주면 주어진 숫자 그대로 문자열이 됨)
하샤드 수 조건에 따라, x를 x의 자릿수의 합으로 나누었을 때 나누어 떨어지는지 판단해야 한다.
자릿수의 합은 이전에 풀었던 문제처럼, x의 문자열 xstr의 길이만큼 반복문을 돌려 xstr의 모든 자릿수를 더해 parseInt()로 다시 숫자로 만든다.
x를 모든 자릿수를 더한 sum으로 나누었을 때, 나머지가 없을 경우 true를, 아닐 경우 false를 리턴한다.
https://programmers.co.kr/learn/courses/30/lessons/68935
function solution(n) {
// let answer = 0;
// // let trit = n.toString(3);
// let trit = n.toString(3).split('').reverse().join('');
// answer = parseInt(trit,3)
// return answer;
let answer = 0;
let trit = '';
while(n>=3) {
trit += n % 3;
n = parseInt(n / 3);
} console.log(n)
trit += n % 3;
let length = trit.length;
for(let i = 0; i < trit.length; i++) {
length --;
answer += Number(trit[i])*3**length;
}
return answer
}
주석처리된 코드는 이미 있는 함수를 사용한 경우.
나머지는 함수를 사용하지 않고 반복문을 통해 3진법으로의 변환, 10진법으로의 변환을 한 코드.
이미 있는 함수를 쓰는 게 정신건강에 이롭지 않을까?
코딩 테스트에선 어떤식으로 판단되는지 궁금하다...
https://programmers.co.kr/learn/courses/30/lessons/86491
function solution(sizes) {
let answer = 0;
let w = [];
let h = [];
for (let i = 0; i < sizes.length; i++) {
if (sizes[i][0] < sizes[i][1]) sizes[i].reverse()
w.push(sizes[i][0])
h.push(sizes[i][1])
}
return Math.max(...w)*Math.max(...h)
}
가로와 세로의 배열 [w,h]의 h가 w보다 클 경우, 명함을 눕히듯 두 요소를 뒤바꿔준다. (무조건 w가 더 큰 수가 되도록)
그 뒤 가장 큰 가로 길이와 가장 큰 세로 길이를 곱해 리턴한다.
내일은 시험... 화이팅인거야..............!