FrontEnd/프로그래머스
[JS] 순위 검색
쿼리문을 활용해서 정보들을 빠르게 가져와야 하는 문제였다. Map자료형을 활용해서 해결하였다. 정보를 입력할때 언어-유형-기간-음식 을 하나의 key로 처리하도록 형식을 만들어서 입력해줬고, 해당 키가 있는경우에는 score를 리스트에 추가해주었다. 즉, 데이터를 입력받으면 아래와 같이 되야한다. 이어서 쿼리문을 입력받아야 하는데 ' - ' 가 오는경우에는 그 언어의 모든 경우의수를 만들어주는 함수를 만들었다. 만약 아래 사진처럼 - and - and - and chicken 100이라면, 검색해야하는 쿼리문들을 모두 찾아주었다. 어차피 Map자료형으로 만들었기 때문에 Map자료형에 있는 저 값들 중에서 점수보다 높은 값들의 개수만 알면 된다. 처음에는 filter함수를 활용해서 해결했는데 효율성 테스트..
[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..
[JS] 거리두기 확인하기
파티션이 있는경우, 거리가 2 이내여도 거리두기를 했다고 가정한다.. 라는 조건이 있어서 dfs로 구현했다. 먼저 dfs함수를 하나 만들어서 주변에 2 맨하튼 거리 이내에 P가 있는지 검사해주는 함수를 만든다. checkDistance함수에서는 2차원 배열을 받아서 P가있는곳을 찾아서 해당 P 근처에 P가있는지 검사해준다. 이때 한 사람이라도 거리두기를 못했다면 0을 반환하게 하고 모든 사람이 통과했다면 1을 반환하게 해주었다. function solution(places) { const dx = [1,0,-1,0] const dy = [0,1,0,-1] const dfs = (x,y,dist,place) => { if (place[y][x]==='P') return true for (let k = 0 ..
[JS] 모음 사전
완전탐색을 활용해서 사전을 map자료형으로 가져올 수 있도록 했다. 단어가 5개이고 순서도 최대 5개였기 때문에 완전탐색을 사용해도 해결할법한 문제였다. function solution(word) { const map = new Map() const words = ["A","E","I","O","U"] let cnt = 0 const dfs = (word) => { if (word.length>5) return map.set(word , ++cnt) for (let i = 0 ; i