
주어진 숫자 중 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 올라가게 만들었다.
사용자가 웹 사이트를 방문할 때 마다 이전에 방문했던 정보를 기억하는 데이터 파일
=>데이터를 여러 사이트에 공유할 수 있기 때문에 보안에 취약.
클라이언트가 마음대로 데이터를 확인할 수 있음.
만료 기간이 있음.
쿠키를 기반으로 구성된 기술. 쿠키와는 다르게 데이터를 서버에만 저장.
세션 id를 쿠키를 이용해 클라이언트에게 전달하여 서버는 이 세션 id를 이용해 저장된 세션 데이터를 조회.
보안성은 좋지만 사용자가 많으면 서버에 저장할 데이터가 많아져서 서버 컴퓨터가 감당하지 못하는 문제가 생김.
만료 기간이 있음.
웹 표준으로 서버와 클라이언트 사이에서 정보를 안전하게 전송하기 위해 도움을 주는 웹 토큰.
JSON형태의 데이터를 안전하게 전송하고 검증할 수 있는 기능을 제공.
인터넷 표준으로 자리잡은 규격
다양한 암호화 알고리즘에 사용할 수 있어 신뢰성 보장.
header.payload.signature의 형식으로 3가지 데이터를 포함.
=> JWT 형식으로 변환 된 데이터는 항상 2개의 .이 포함된 데이터이어야함.
헤더(Header), 페이로드(Payload), 서명(Signature)로 구성.
토큰의 타입과 어떤 암호화를 사용해 생성된 데이터인지 정의되어있음.
실제 전달하려는 데이터를 담음.
=> 대표적으로 개발자가 원하는 데이터를 저장.
헤더와 페이로드, 비밀 키를 이용해 생성.
=> 토큰이 변조되지 않은 정상적인 토큰인지 확인.
| JWT | 쿠키, 세션 |
|---|---|
| 변조가 어렵고 서버에 별도의 상태 정보를 저장하지 않아 서버를 무상태(Stateless)로 관리됨. | 사용자의 로그인 정보나 세션 데이터를 서버에 저장해 상태 보존(Stateful)하게 데이터가 관리됨. |
=> 서버가 죽었다 살아나도 같은 동작을 하면 무상태(Stateless), 조금이라도 다른 동작을 하면 상태 보존(Stateful)