[TIL] d+10


HTTPS


TLSで暗号化接続するHTTP(HTTP Secure)
httpとは異なり暗号化されているので安全です.
デフォルトポートが80のHTTPとは異なり、443番ポートを使用します.
従来のHTTPはテキストデータを交換する方式で,誰かが中間から信号を切り取ると内容が露呈する.(前回JWTログイン前のCookieログインのように)
HTTPSはこのような従来のデータ交換方式を暗号化し,2つの鍵を用いてサーバとクライアントの間でデータの暗号化と復号化を繰り返した.
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の場合、2番目のインデックス(タスクの繰り返し回数)が返されます.

ハザード数


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をすべての桁数の和で割った場合、残数がなければ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より大きい場合は、名刺を横にするように、2つの要素を逆さまにします.(無条件にwを大きくする)
次に、最大の横方向の長さと最大の縦方向の長さを乗算して返します.
明日試験があります.がんばって…!