11월, 2019의 게시물 표시

[프로그래머스] 캐시 javascript

[2018 KAKAO BLIND RECRUITMENT] [1차] 캐시 javascript 조건 캐시 교체 알고리즘은  LRU (Least Recently Used)를 사용한다. cache hit 일 경우 실행시간은  1 이다. cache miss 일 경우 실행시간은  5 이다. 제한사항 캐시 크기( cacheSize )와 도시이름 배열( cities )을 입력받는다. cacheSize 는 정수이며, 범위는 0 ≦  cacheSize  ≦ 30 이다. cities 는 도시 이름으로 이뤄진 문자열 배열로, 최대 도시 수는 100,000개이다. 각 도시 이름은 공백, 숫자, 특수문자 등이 없는 영문자로 구성되며, 대소문자 구분을 하지 않는다. 도시 이름은 최대 20자로 이루어져 있다. 입출력 예 캐시크기(cacheSize) 도시이름(cities) 실행시간 3 [ Jeju ,  Pangyo ,  Seoul ,  NewYork ,  LA ,  Jeju ,  Pangyo ,  Seoul ,  NewYork ,  LA ] 50 3 [ Jeju ,  Pangyo ,  Seoul ,  Jeju ,  Pangyo ,  Seoul ,  Jeju ,  Pangyo ,  Seoul ] 21 2 [ Jeju ,  Pangyo ,  Seoul ,  NewYork ,  LA ,  SanFrancisco ,  Seoul ,  Rome ,  Paris ,  Jeju ,  NewYork ,  Rome ] 60 5 [ Jeju ,  Pangyo ,  Seoul ,  NewYork ,  LA ,  SanFrancisco ,  Seoul ,  Rome ,  Paris ,  Jeju ,  NewYork ,  Rome ] 52 2 [ Jeju ,  Pangyo ,  NewYork ,  newyork ] 16 0 [ Jeju ,  Pangyo ,  Seoul ,  NewYork ,  LA ] 25 코드 function solution(

[프로그래머스] 비밀지도 javascript

[2018 KAKAO BLIND RECRUITMENT] [1차] 비밀지도 javascript 조건 지도는 한 변의 길이가  n 인 정사각형 배열 형태로, 각 칸은  공백 ("  ) 또는 벽 ( #") 두 종류로 이루어져 있다. 전체 지도는 두 장의 지도를 겹쳐서 얻을 수 있다. 각각  지도 1 과  지도 2 라고 하자. 지도 1 또는 지도 2 중 어느 하나라도 벽인 부분은 전체 지도에서도 벽이다. 지도 1과 지도 2에서 모두 공백인 부분은 전체 지도에서도 공백이다. 지도 1 과  지도 2 는 각각 정수 배열로 암호화되어 있다. 암호화된 배열은 지도의 각 가로줄에서 벽 부분을  1 , 공백 부분을  0 으로 부호화했을 때 얻어지는 이진수에 해당하는 값의 배열이다. 제한사항 1 ≦  n  ≦ 16 arr1 ,  arr2 는 길이  n 인 정수 배열로 주어진다. 정수 배열의 각 원소  x 를 이진수로 변환했을 때의 길이는  n  이하이다. 즉, 0 ≦  x  ≦ 2 n  - 1을 만족한다. 입출력 예 매개변수 값 n 5 arr1 [9, 20, 28, 18, 11] arr2 [30, 1, 21, 17, 28] 출력 ["#####","# # #", "### #", "# ##", "#####"] 매개변수 값 n 6 arr1 [46, 33, 33 ,22, 31, 50] arr2 [27 ,56, 19, 14, 14, 10] 출력 ["######", "### #", "## ##", " #### ", " #####", "### # "] 코드 function solution(n, arr1, arr2) { var answer = []; const len = arr1.length;

[프로그래머스] 다트 게임 javascript

[2018 KAKAO BLIND RECRUITMENT] [1차] 다트 게임 javascript 조건 다트 게임은 총 3번의 기회로 구성된다. 각 기회마다 얻을 수 있는 점수는 0점에서 10점까지이다. 점수와 함께 Single( S ), Double( D ), Triple( T ) 영역이 존재하고 각 영역 당첨 시 점수에서 1제곱, 2제곱, 3제곱 (점수 1  , 점수 2  , 점수 3  )으로 계산된다. 옵션으로 스타상( * ) , 아차상( # )이 존재하며 스타상( * ) 당첨 시 해당 점수와 바로 전에 얻은 점수를 각 2배로 만든다. 아차상( # ) 당첨 시 해당 점수는 마이너스된다. 스타상( * )은 첫 번째 기회에서도 나올 수 있다. 이 경우 첫 번째 스타상( * )의 점수만 2배가 된다. (예제 4번 참고) 스타상( * )의 효과는 다른 스타상( * )의 효과와 중첩될 수 있다. 이 경우 중첩된 스타상( * ) 점수는 4배가 된다. (예제 4번 참고) 스타상( * )의 효과는 아차상( # )의 효과와 중첩될 수 있다. 이 경우 중첩된 아차상( # )의 점수는 -2배가 된다. (예제 5번 참고) Single( S ), Double( D ), Triple( T )은 점수마다 하나씩 존재한다. 스타상( * ), 아차상( # )은 점수마다 둘 중 하나만 존재할 수 있으며, 존재하지 않을 수도 있다. 제한사항 점수는 0에서 10 사이의 정수이다. 보너스는 S, D, T 중 하나이다. 옵선은 *이나 # 중 하나이며, 없을 수도 있다. 입출력 예 예제 dartResult answer 설명 1 1S2D*3T 37 1 1  * 2 + 2 2  * 2 + 3 3 2 1D2S#10S 9 1 2  + 2 1  * (-1) + 10 1 3 1D2S0T 3 1 2  + 2 1  + 0 3 4 1S*2T*3S 23 1 1  * 2 * 2 + 2 3  * 2 + 3 1 5 1D#2S*3S 5 1 2  * (-1)

Create React App v2 sass-loader 설정

이미지
Create React App v2 사용 시 sass-loader 설정 환경 CRA v2 node-sass, sass-loader 설치 터미널에서 명령어 npm install --save node-sass sass-loader 입력 Path 수정 node_moduless 폴더에서 react-scripts 폴더로 이동 config폴더의 webpack.config.js 열기 "cssRegex", "cssModuleRegex" 검색 후 변수 값 변경 css -> (css|scss) "file-loader" 검색 후 'exclude' property안의 배열에 /\.scss$/ 추가 "cssRegex" 검색 시 test : cssRegex의 같은 레벨의 property인 use 안에 아래 코드 추가 modules: true, localIdentName: "[name]_[local]_[hash:base64:5]" postcss-loader 검색 후 loader: 아래에 코드 추가 { loader: require.resolve('sass-loader'), options: cssOptions }

[프로그래머스] 실패율 javascript

[(2019년)KAKAO BLIND RECRUITMENT] 실패율 javascript 조건 실패율은 다음과 같이 정의한다. 스테이지에 도달했으나 아직 클리어하지 못한 플레이어의 수 / 스테이지에 도달한 플레이어 수 전체 스테이지의 개수 N, 게임을 이용하는 사용자가 현재 멈춰있는 스테이지의 번호가 담긴 배열 stages가 매개변수로 주어질 때, 실패율이 높은 스테이지부터 내림차순으로 스테이지의 번호가 담겨있는 배열을 return 하라 제한사항 스테이지의 개수 N은  1  이상  500  이하의 자연수이다. stages의 길이는  1  이상  200,000  이하이다. stages에는  1  이상  N + 1  이하의 자연수가 담겨있다. 각 자연수는 사용자가 현재 도전 중인 스테이지의 번호를 나타낸다. 단,  N + 1  은 마지막 스테이지(N 번째 스테이지) 까지 클리어 한 사용자를 나타낸다. 만약 실패율이 같은 스테이지가 있다면 작은 번호의 스테이지가 먼저 오도록 하면 된다. 스테이지에 도달한 유저가 없는 경우 해당 스테이지의 실패율은  0  으로 정의한다. 입출력 예 N stages result 5 [2, 1, 2, 6, 2, 4, 3, 3] [3,4,2,1,5] 4 [4,4,4,4,4] [4,1,2,3] 코드 function solution(N, stages) { var answer = []; var stack = []; let users = stages.length; //[] {stage, 실패율} for (var i = 1; i <= N; i ++) { const len = stages.filter(value => value === i).length; if (len === 0){ stack.push({index:i , ratio:0}); }else {

[프로그래머스] 문자열 압축 javascript

[(2020년)KAKAO BLIND RECRUITMENT] 문자열 압축 javascript 조건 문자열을 1개 이상의 단위로 잘라서 압축하여 더 짧은 문자열로 표현할 수 있는지 방법을 찾아보려고 합니다. ababcdcdababcdcd 의 경우 문자를 1개 단위로 자르면 전혀 압축되지 않지만, 2개 단위로 잘라서 압축한다면  2ab2cd2ab2cd 로 표현할 수 있습니다.  다른 방법으로 8개 단위로 잘라서 압축한다면  2ababcdcd 로 표현할 수 있으며, 이때가 가장 짧게 압축하여 표현할 수 있는 방법입니다. 압축할 문자열 s가 매개변수로 주어질 때, 위에 설명한 방법으로 1개 이상 단위로 문자열을 잘라 압축하여 표현한 문자열 중 가장 짧은 것의 길이를 return 제한사항 s의 길이는 1 이상 1,000 이하입니다. s는 알파벳 소문자로만 이루어져 있습니다. 입출력 예 s result "aabbaccc" 7 "ababcdcdababcdcd" 9 "abcabcdede" 8 "abcabcabcabcdededededede" 14 "xababcdcdababcdcd" 17 코드 function solution(s) { let answer = s; //문자열 그대로 반환 const cut_len = s.length / 2; //문자열 길이 / 2까지만 압축가능 const str_len = s.length; //문자열 길이만큼 loop 돌면서 자르는 단위 증가 for (let i = 1; i <= cut_len; i++) //문자열 n개 단위 자르기(1~s.length/2) { let temp_str = ""; //임시로 압축한 문자열 저장하는 변수 let cut_str = s.slice(0, i); //최초 n

[프로그래머스] 괄호 변환 javascript

[(2020년)KAKAO BLIND RECRUITMENT] 괄호 변환 javascript 조건 p는 '(' 와 ')' 로만 이루어진 문자열이며 길이는 2 이상 1,000 이하인 짝수입니다. 문자열 p를 이루는 '(' 와 ')' 의 개수는 항상 같습니다. 만약 p가 이미  올바른 괄호 문자열 이라면 그대로 return 하면 됩니다. 조건사항 '(' 의 개수와 ')' 의 개수가 같다면 이를 균형잡힌 괄호 문자열 이라고 부릅니다. '('와 ')'의 괄호의 짝도 모두 맞을 경우에는 이를 올바른 괄호 문자열 이라고 부릅니다. 예를 들어, "(()))(" 와 같은 문자열은 균형잡힌 괄호 문자열 이지만 올바른 괄호 문자열은 아닙니다. 반면에 "(())()" 와 같은 문자열은 균형잡힌 괄호 문자열 이면서 동시에 올바른 괄호 문자열 입니다. 1. 입력이 빈 문자열인 경우, 빈 문자열을 반환합니다. 2. 문자열 w를 두 "균형잡힌 괄호 문자열" u, v로 분리합니다. 단, u는 "균형잡힌 괄호 문자열"로 더 이상 분리할 수 없어야 하며, v는 빈 문자열이 될 수 있습니다. 3. 문자열 u가 "올바른 괄호 문자열" 이라면 문자열 v에 대해 1단계부터 다시 수행합니다. 3-1. 수행한 결과 문자열을 u에 이어 붙인 후 반환합니다. 4. 문자열 u가 "올바른 괄호 문자열"이 아니라면 아래 과정을 수행합니다. 4-1. 빈 문자열에 첫 번째 문자로 '('를 붙입니다. 4-2. 문자열 v에 대해 1단계부터 재귀적으로 수행한 결과 문자열을 이어 붙입니다. 4-3. ')'를 다시 붙입니다. 4-4. u의 첫 번째와 마지막 문자를 제거하고, 나머지 문자열의 괄호 방향을 뒤집어서 뒤에 붙