내일배움캠프 Node.js 본캠프 32일차

김선우·2024년 9월 23일
post-thumbnail

알고리즘 문제 풀어보기

소수 만들기

문제 설명

주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때 소수가 되는 경우의 개수를 return 하도록 solution 함수를 완성해주세요.

제한사항

nums에 들어있는 숫자의 개수는 3개 이상 50개 이하입니다.
nums의 각 원소는 1 이상 1,000 이하의 자연수이며, 중복된 숫자가 들어있지 않습니다.

풀이 코드

function solution(nums) {
    var answer = 0;
    var sum = 0;

    for(i=0;i<nums.length;i++){
        for(j=i+1;j<nums.length;j++){
            for(k=j+1;k<nums.length;k++){
                sum = nums[i]+nums[j]+nums[k];
                if(isPrime(sum)){
                    answer++;
                }
            }
        }
    }
    return answer;
}
function isPrime(sum) {
    for(let i = 2; i < sum; i++)
    if(sum % i === 0) {
        return false;
    }
    return sum > 1;
}

풀이 과정

3중 반복문을 이용해 nums 배열의 3개의 값을 합한 값을 sum이라 하고, isPrime이라는 소수를 판별할 수 있는 함수를 만들어 sum을 입력했을 때, 소수이면 answer값을 1 올라가게 만들었다.

쿠키와 세션

쿠키(Cookie)

사용자가 웹 사이트를 방문할 때 마다 이전에 방문했던 정보를 기억하는 데이터 파일
=>데이터를 여러 사이트에 공유할 수 있기 때문에 보안에 취약.
클라이언트가 마음대로 데이터를 확인할 수 있음.
만료 기간이 있음.

세션(Session)

쿠키를 기반으로 구성된 기술. 쿠키와는 다르게 데이터를 서버에만 저장.
세션 id를 쿠키를 이용해 클라이언트에게 전달하여 서버는 이 세션 id를 이용해 저장된 세션 데이터를 조회.
보안성은 좋지만 사용자가 많으면 서버에 저장할 데이터가 많아져서 서버 컴퓨터가 감당하지 못하는 문제가 생김.
만료 기간이 있음.

JWT(Json Web Token)

웹 표준으로 서버와 클라이언트 사이에서 정보를 안전하게 전송하기 위해 도움을 주는 웹 토큰.

JSON형태의 데이터를 안전하게 전송하고 검증할 수 있는 기능을 제공.
인터넷 표준으로 자리잡은 규격
다양한 암호화 알고리즘에 사용할 수 있어 신뢰성 보장.
header.payload.signature의 형식으로 3가지 데이터를 포함.
=> JWT 형식으로 변환 된 데이터는 항상 2개의 .이 포함된 데이터이어야함.

구성


헤더(Header), 페이로드(Payload), 서명(Signature)로 구성.

토큰의 타입과 어떤 암호화를 사용해 생성된 데이터인지 정의되어있음.

Payload

실제 전달하려는 데이터를 담음.
=> 대표적으로 개발자가 원하는 데이터를 저장.

Signature

헤더와 페이로드, 비밀 키를 이용해 생성.
=> 토큰이 변조되지 않은 정상적인 토큰인지 확인.

특성

  • 비밀키를 모르더라도 복호화가 가능.
    • JWT를 가진사람이면 누구나 해당 토큰에 담긴 데이터 확인 가능.
    • 변조만 불가능하지 누구나 복호화해서 보는것은 가능.
  • 민감한 정보(개인정보, 비밀번호)를 담지 않아야함.
    => 누구나 복호화해서 열람이 가능하므로.
  • JS와 같이 특정 언어에서만 사용가능한 것 X
    • JWT = 데이터 형식, 개념으로 존재.

쿠키, 세션과의 차이점

JWT쿠키, 세션
변조가 어렵고 서버에 별도의 상태 정보를 저장하지 않아 서버를 무상태(Stateless)로 관리됨.사용자의 로그인 정보나 세션 데이터를 서버에 저장해 상태 보존(Stateful)하게 데이터가 관리됨.

=> 서버가 죽었다 살아나도 같은 동작을 하면 무상태(Stateless), 조금이라도 다른 동작을 하면 상태 보존(Stateful)

0개의 댓글