PS
제코베 JS 100제 / 99 / 토끼들의 행진
토끼들이 징검다리를 건너려고 합니다. 하지만 돌이 부실해서 몇 번 건너지 못할 것 같습니다. 대기 중인 토끼들의 통과 여부를 배열에 담아 출력해 주세요. 1. 각 돌들이 얼마나 버틸 수 있는지 배열로 주어집니다. 2. 각 토끼가 착지할 때마다 돌의 내구도는 1씩 줄어듭니다. ex) [1,2,1,4] 각 돌마다 1마리 2마리 1마리 4마리의 착지를 버틸 수 있습니다. 3. 토끼들은 점프력이 각자 다릅니다. ex) [2,1] 첫 번째 토끼는 2칸씩, 두 번째 토끼는 1칸씩 점프합니다. 4. 각 토끼들은 순서대로 다리를 건넙니다. function solution() { let stoneDurabilityArr = [1, 2, 1, 4, 5, 2]; const RABBIT_JUMP_POWER_ARR = [2, ..
제코베 JS 100제 / 98 / 청길이의 패션 대회
패션의 선도주자 청길이는 패션의 발전을 위해 패션쇼를 방문해 유니크한 아이템을 조사하기로 하였습니다. 청길이는 입장하는 사람들의 패션에서 처음 보는 아이템 만을 기록합니다. 이때 청길이의 기록에서 아래 규칙에 맞게 배열로 출력해 주세요. 청길이는 각 옷의 종류를 정수로 기록해 놓습니다. ex) 입력은 "1번: 3,1 2번: 4 3번: 2,1,3 4번: 2,1,3,4" 형태의 문자열입니다. 기록은 청길이가 번호 순서로 유니크한 옷의 번호를 적습니다. 유니크한 옷은 기록된 순서로 추출되고 출력됩니다. ex) 출력은 [3,1,4,2]입니다. function solution() { const INPUT = '1번: 4,2,3 2번: 3 3번: 2,3,4,1 4번: 2,3'; const KIND_LIST = IN..
제코베 JS 100제 / 97 / 택배 배달
n 명의 택배 배달원은 쌓인 택배를 배달해야 합니다. 각 택배는 접수된 순서로 배달이 되며 택배마다 거리가 주어집니다. 거리 1당 1의 시간이 걸린다고 가정하였을 때 모든 택배가 배달 완료될 시간을 구하세요. 1. 모든 택배의 배송 시간 1 이상이며 배달지에 도착하고 돌아오는 왕복 시간입니다. 2. 택배는 물류창고에서 출발합니다. 3. 배달을 완료하면 다시 물류창고로 돌아가 택배를 받습니다. 4. 물류창고로 돌아가 택배를 받으면 배달을 시작합니다. 5. 택배를 상차할 때 시간은 걸리지 않습니다. 입력은 배달원의 수와 택배를 배달하는 배달 시간이 주어집니다. ex) 배달원이 3명이고 각 거리가 [1,2,1,3,3,3]인 순서로 들어오는 경우 function solution() { const DILIVERY..
제코베 JS 100제 / 96 / 넓은 텃밭 만들기!
수연이는 밭농사를 시작하기로 마음을 먹었다. 집 앞 텃밭을 만들기로 하고 돌들을 제거하고 있는데 매우 큰 바위는 옮기지 못해 고심하고 있다. 이에 수연이는 다음과 같은 규칙을 정한다. 1. 바위를(바위는 '1'로 표기한다.) 피해 텃밭을 만들되 정사각형 모양으로 텃밭을 만든다. 2. 텃밭은 가장 넓은 텃밭 1개만 만들고 그 크기를 반환한다. 3. 만든 텃밭은 모두 '#'으로 처리한다. /** * 2차원 배열인 텃밭 배열을 받아, * 가장 넓은 텃밭의 크기와 만든 텃밭을 출력하는 함수 * * @param {number[][]} GARDEN */ function makeWideGarden(GARDEN) { const ROW_COUNT = GARDEN.length; const COL_COUNT = GARDEN..
제코베 JS 100제 / 95 / 도장찍기
빈 종이에 stamp 모양으로 생긴 도장을 90*k 도로 회전하여 찍습니다. 도장은 N*N 크기이며 각 도장이 찍히는 부분은 1 이상의 자연수와 도장이 찍히지 않는 0으로 이루어져 있습니다. 도장의 크기 N과, 종이에 찍힌 도장 횟수를 표현한 stamp 배열과, 얼만큼 회전할 것인지를 알려주는 회전수 k를 입력받았을 때 각 위치에서 몇 번 도장이 찍혔는지 그 결과값을 출력하세요 /** * 2차원 배열로 구성된 도장과 회전 횟수를 인자로 받아, * 회전 횟수만큼 돌린 도장을 return 해주는 함수 * * @param {number[][]} STAMP 도장 * @param {number} ROTATE_COUNT 회전 횟수 * @returns {number[][]} 오른쪽으로 90도 회전한 도장 return..
제코베 JS 100제 / 94 / 페이지 교체 - LRU 알고리즘
LRU 알고리즘이란 페이지 교체 알고리즘으로써, Least Recently Used의 약자입니다. 즉 페이지 부재가 발생했을 경우 가장 오랫동안 사용되지 않은 페이지를 제거하는 알고리즘입니다. 이 알고리즘의 기본 가설은 가장 오랫동안 이용되지 않은 페이지는 앞으로도 사용할 확률이 적다는 가정하에 페이지 교체가 진행됩니다. 다음 그림을 참고해주세요. 메모리의 크기가 i로 주어지고 들어올 페이지들이 n으로 주어졌을 때, 전체 실행시간을 구해주세요. 만약 스택 안에 같은 스케줄이 있다면 hit 이라고 하며 실행시간은 1초 입니다. 스택 안에 스케줄이 없다면 miss 라고 하며 실행시간은 6초 입니다. 예제 1번을 보면 페이지 프레임의 개수는 3개이고 스케줄은 'BCBAEBCE' 입니다. 5번의 miss를 기록..