FrontEnd

    [JS] 메뉴 리뉴얼

    알파벳이 총 10개까지나오니 순열을 사용해도 괜찮을 문제라는 생각이 들었다. 따라서 각 order별로 2개,3개,4개라면 각각의 순열조합을 찾은이후 이를 Map 자료형에 매핑해가며 개수를 조합했다. 단, 음식들이 정렬되어서 나오지 않으니 정렬해주는 과정이 필요했다. Map자료형에서 최대값들을 뽑아내서 저장했는데, max_ 값을 2로 설정해서 만약 주문이 2개이상 나오지 않으면 저장하지 않도록 설정해주었다. 이후 나온 조합들을 모두 한 배열에 넣고 정렬해준 후 제출하였다. 순열,조합을 생각보다 완전탐색 문제들에서 자주 사용하게 되는것 같은데 언제든 바로바로 나올 수 있게 연습을 좀 더 해두어야 될 것 같다.. const getCombination = (ary,n) => { let ret = [] if (n..

    [JS] 순위 검색

    쿼리문을 활용해서 정보들을 빠르게 가져와야 하는 문제였다. Map자료형을 활용해서 해결하였다. 정보를 입력할때 언어-유형-기간-음식 을 하나의 key로 처리하도록 형식을 만들어서 입력해줬고, 해당 키가 있는경우에는 score를 리스트에 추가해주었다. 즉, 데이터를 입력받으면 아래와 같이 되야한다. 이어서 쿼리문을 입력받아야 하는데 ' - ' 가 오는경우에는 그 언어의 모든 경우의수를 만들어주는 함수를 만들었다. 만약 아래 사진처럼 - and - and - and chicken 100이라면, 검색해야하는 쿼리문들을 모두 찾아주었다. 어차피 Map자료형으로 만들었기 때문에 Map자료형에 있는 저 값들 중에서 점수보다 높은 값들의 개수만 알면 된다. 처음에는 filter함수를 활용해서 해결했는데 효율성 테스트..

    [JS] 원시값의 메서드

    자바스크립트에선 원시값 (문자열,숫자 등등)을 객체처럼 다룰 수 있다. 문자열에 내장된 substring,toUpperCase 와 같은 내장 메서드를 활용할 수 있다. 그렇다면 자바스크립트에서는 원시형들을 객체로 보고 있는 것일까?? 결론부터 말하면 조금 다르다. 원시값은 string , number , bigInt , boolean , symbol , null , undefined 총 7가지가 있는데, 이런 원시형들은 하나의 값으로써 이를 다루는 작업이 많기 때문에 가볍고 빨라야한다. 그렇다면 어떻게 우리는 원시형의 내장 메서드들을 활용할 수 있을까? 자바스크립트는 아래와 같은 방식으로 이를 해결하였다. 1. 원시값은 단일값 형태를 유지한다. 2. 각 원시값의 메서드에 접근할 때 오류가 나지 않도록 처..

    [JS] 괄호 회전하기

    2가지 함수를 활용해서 해결하였다. 1. 올바른 괄호열인지 확인하는 함수 스택 구조를 활용해서 {[( 와 같은 시작하는 괄호가 있으면 넣어주고 끝나는 괄호면 가장 최근에 들어갔던 괄호와 타입이 맞는지 체크한다. 문자를 다 돌았을때 스택에 아무것도 없다면 올바른 괄호열이다. 2. 회전하는 함수 문자열의 맨 첫문자를 뒤에 붙이면 왼쪽으로 1회 회전이 가능하다. 3. 회전 => 올바른 괄호인지 체크 후 카운트 function solution(s) { const obj= { '}' : '{', ']' : '[', ')' : '(', } const isCorrectBracket = (str) => { const stk = [] for (const c of str) { if ('{[('.includes(c)) st..

    [JS] 행렬 테두리 회전하기

    회전시켜주는 함수를 만들어서 회전기능 + 회전할때 값들 중에서 최소값을 저장 하도록 해주었다. 1. 문제에서 제공하는데로 1,2,3,4,5,6,7... 로 증가되는 2차원 배열 만들기 2. 시계방향으로 회전시키기 위해서 회전시킬 좌표를 기준으로 반시계의 리스트를 작성 반시계로 저장하는 이유는, 반시계로 순서를 짠 이후, 해당 배열을 반시계 방향에서 가져오면 결과적으로 시계방향이 되게 되기 때문 3. 리스트를 다 순회하고 최소값을 반환 4. map함수를 이용해서 깔끔하게 정리 어렵다기 보다는 실수가 많이 나올 수 있어서 꼼꼼하게 해결해야 하는 문제였다. function solution(rows, columns, queries) { const map = [...new Array(rows)].map((_,i)..

    [JS] 두개 이하로 다른 비트

    문제에서 주어진 값을 생각할때 규칙을 찾아볼 수 있었다. 1. 만약 수가 짝수라면 무조건 자기숫자 +1이 답이다. (2의 배수는 2진법으로 나타냈을 때 끝이 무조건 0이기 때문) 2. 홀수인경우 홀수인 경우 고민을 많이 했다. 단순히 맨 마지막에 나오는 0을 1로 바꾸면 안되었기 때문 따라서 앞에 0을 붙여준 후, 마지막에 나오는 0을 1로바꾸고, 그 다음에 나오는 비트를 0으로 고정시켜주면 1개 혹은 2개로 답이 나오게 된다. function solution(numbers) { return numbers.map(el => { if (!(el%2)) return el +1 const bin = '0'+el.toString(2) const idx = bin.lastIndexOf('0') return par..