코드, 면접문제중 아무거나 2문제씩
문제 설명
1937년 Collatz란 사람에 의해 제기된 이 추측은, 주어진 수가 1이 될때까지 다음 작업을 반복하면, 모든 수를 1로 만들 수 있다는 추측입니다. 작업은 다음과 같습니다.
1-1. 입력된 수가 짝수라면 2로 나눕니다.
1-2. 입력된 수가 홀수라면 3을 곱하고 1을 더합니다. 2. 결과로 나온 수에 같은 작업을 1이 될 때까지 반복합니다.
예를 들어, 입력된 수가 6이라면 6→3→10→5→16→8→4→2→1 이 되어 총 8번 만에 1이 됩니다. 위 작업을 몇 번이나 반복해야하는지 반환하는 함수, solution을 완성해 주세요. 단, 작업을 500번을 반복해도 1이 되지 않는다면 –1을 반환해 주세요.
제한 조건
입력된 수, num은 1 이상 8000000 미만인 정수입니다.
입출력 예
n result
6 8
16 4
626331 -1
입출력 예 설명
입출력 예 #1
문제의 설명과 같습니다.
입출력 예 #2
16 -> 8 -> 4 -> 2 -> 1 이되어 총 4번만에 1이 됩니다.
입출력 예 #3
626331은 500번을 시도해도 1이 되지 못하므로 -1을 리턴해야합니다.
code
function solution(num) {
let result = 0;
for (let i = 0; i < 500; i++) {
if (num !== 1) {
if (num % 2 === 0) {
num /= 2;
} else {
num = num * 3 + 1;
}
} else {
return (result = i);
}
}
return (result = -1);
}
description
일단 num이 1일때와 1이 아닐때로 크게 나누었고, num이 1일때 num이 짝수일때, 홀수일때로 나누어 식을 작성하고, 1이 아닐때는 -1이 반환되도록 했다.
[Frontend Question]
Answer.
일단 렌더링은 요청해서 서버로부터 받은 내용을 브라우저 화면에 표시하는 것입니다.
일단 서버사이드 렌더링(SSR) 은 페이지를 이동할 때마다 새로운 페이지를 요청합니다.모든 탬플릿은 서버 연산을 통해서 렌더링하고 완성된 페이지 형태로 응답합니다. 서버사이드는 검색엔진 최적화 (SEO)가 가능합니다. 첫 렌더링된 html 을 클라이언트에게 전달해 주기때문에 초기로딩속도를 많이 줄여줄 수 있습니다. 자바스크립트 파일을 불러오고 렌더링 작업이 완료되기 전에 사용자가 사이트 컨텐츠를 이용할 수 있게됩니다.
그렇지만, 페이지 이동시 화면이 깜빡거리고, 서버 렌더링에 따른 부하가 발생할 수 있으며, 페이지 요청마다 페이지 새로고침이 발생합니다.
클라이언트 사이드 랜더링은 클라이언트에서 렌더링하는 방식이며, 첫 요청할때 한페이지 만 불러오게 됩니다. 즉, Single Page Application입니다. 그후 , 사용자의 행동에 따른 필요한 부분만 다시 읽어들이기 때문에 리로딩없이 서버로부터 받아서 갱신하게 되어 빠른 인터렉션을 기대할 수 있습니다. 단점으로는 초기 구동속도가 느리고, 검색엔진 최적화가 어렵습니다.