작업물들의 진행도가 적혀있는 progresses 리스트와 각 작업물들이 하루에 어느정도 개발할 수 있는지 적혀있는 speeds 리스트가 있다.
우리는 진행 일수에 따라서 각 배포마다 몇 개의 기능이 배포되는지를 알고자 한다.
위 문제는 각 작업물마다 며칠이 지나야 배포가 가능한지를 구한 후 이걸 가지고 배포일 기준으로 몇개씩 처리되는지 체크할 것이다.
function solution(progresses, speeds) {
const answer = [];
// 각 작업물마다 얼마나 걸리는지 구한다.
const completeDays = progresses.map((progress,idx) => Math.ceil((100-progress)/speeds[idx]));
const length = completeDays.length;
// 첫 번 째 비교할 일수를 첫 작업물의 완수일로 지정한다.
let day = completeDays[0];
let num = 0;
// 전체 작업물을 돌면서 날짜를 비교한다.
for(let i=0; i<length; i++){
// 해당 작업물이 완수일보다 작거나 같으면 배포가 가능하다는 뜻으로 num을 증가
if(completeDays[i] <= day){
num++;
// 아니라면 지금까지 배포할 수 있는 건수(num)를 answer 배열에 넣고 현재 작업물의 완수일을 day에 대입
}else{
answer.push(num);
num = 1;
day = completeDays[i];
}
}
// 마지막으로 나올때 answer에 num을 push 하지 않고 나오기 때문에 최종으로 푸쉬해줌.
answer.push(num);
return answer;
}
IP는 Internet Protocol, 즉 인터넷에서 데이터를 전달하기 위한 규칙이다. IP는 데이터 패킷을 전송하는 과정에서 목적지 주소를 포함해 통신할 수 있도록 하는 역할을 한다.
IP 주소는 네트워크 상의 각 장치를 식별하는 고유 번호이다. IPv4와 IPv6로 나뉘며 차이는 다음과 같다.
서브넷 마스크는 IP주소의 네트워크 부분과 호스트 부분을 구분하는데 사용된다. 서브넷 마스크 255.255.255.0은 IP 주소의 첫 3바이트를 네트워크 주소로 마지막 1바이트를 호스트 주소로 구분한다. 이를 통해 하나의 네트워크를 여러 개의 서브네트워크로 나눌 수 있고 효율적 할당이 가능하다.
IP주소는 고정 IP
라우터는 여러 네트워크 간 데이터를 전달하는 네트워크 장치로 서로 다른 네트워크 간의 통신을 중계하며, IP패킷을 적절한 경로로 전달하여 목적지까지 전송하는 역할을 한다.
라우팅은 데이터를 최적의 경로로 전달하는 과정이며 크게 2가지로 나뉜다.
정적라우팅
관리자가 수동으로 경로를 설정하는 방식으로 네트워크가 환경이 작고, 자주 변하지 않는 환경에서 사용된다. 설정이 간단하지만 변화에 유연하지 않다는 점이 있다.
동적라우팅
라우터가 자동으로 경로를 선택하고 관리하는 방식으로 라우팅 프로토콜을 통해 다른 라우터와 정보를 교환하고 변화하는 네트워크 환경에 따라 경로를 자동 수정한다.