FrontEnd

    [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

    [JS] 빛의 경로 사이클

    개인적으로 이런 2차원 배열 관련 문제들을 좋아해서 재밌었던 문제였다. 문제의 핵심은 한번 빛이 지나간 경로를 따라가면 한 사이클이 된다는 것이다. visited배열을 통해서 Node의 방문 기록을 저장해줘야 하는데 Node당 4방향으로 빛이 나갈 수 있기 때문에 각 방향마다 방문을 기록할 수 있도록 저장해두었다. 즉 , NODE마다 [false,false,false,false,"S"] 이런식으로 각 노드의 정보와 방문기록을 저장해두었다. 필자는 dx,dy 배열을 우-하-좌-상 방향으로 저장해두었다. 이렇게 저장한 이유는 우측으로 회전하는 순서대로 저장해두어 dx에 1씩더하면 우회전, 1씩 빼면 좌회전이 되기 때문이다. JS에선 -1을 두어도 역순으로 가지 않기 때문에 makeRange함수로 0~n이넘어..

    [JS] 전력망을 둘로 나누기

    완전탐색 & DFS를 활용해서 구현해보았다. 1. 우선 각 노드의 간선을 저장해둔 tree를 만들어둔다. ( 이때 양쪽 둘다 연결된 간선이라고 생각한다.) 2. 선을 하나씩 끊어보면서 개수를 직접 센다 (완전탐색) 3. 개수를 세는 과정은 스택을 활용한 bfs로 구현하였다. 4. 각 개수들을 세가면서 최소의 값을 갱신하면서 저장한다. function solution(n, wires) { const tree = [...new Array(n+1)].map(_ => []) for (const [s,e] of wires){ tree[s].push(e) tree[e].push(s) } let ret = n for (const [s,e] of wires) { const tmpTree = tree.map((el,id..

    [JS] Symbol

    [ 본글은 https://ko.javascript.info/symbol 글을 정리한 글입니다 ] Symbol이란 자바스크립트에서 객체의 Key로 올수 있는 2가지 자료형 중 하나이다. Symbol혹은 문자형만 올 수 있다. 지금까지 JS를 사용할 경우에는 항상 Key가 문자형인 경우만 대부분 사용했었다. 하지만 Symbol을 활용하면 문자형 말고도 객체형의 키를 사용할 수 있다. Symbol은 아래와 같이 만든다. // 심볼 id에는 "id"라는 설명이 붙습니다. let id = Symbol("id"); Symbol의 가장 큰 특징은 유일성이 보장된다는 것이다. 문자형은 두형태가 같으면 중복되지만, Symbol로 만들면 설명이 같아도 다르게 취급한다. let id1 = Symbol("id"); let i..

    [JS] 교점에 별 만들기

    수학적 지식이 약간(?) 필요한 구현 문제였다. 모든 선분간의 교점을 구한 이후, x,y가 둘다 정수인 경우에만 별을 그려주면 되는 문제였다. 각 선분간의 교점을 구하는 식이 주어졌으니 위 식을 그대로 사용해서 교점을 구해주었다. 이후 X,Y의 각 최대,최소값을 구해 주어서 그래프에 그리기 쉽도록 표현해주었다. 단, 일반적인 수학 그래프는 위로 가는데 배열에서는 아래로 가는 구조이므로 마지막에 reverse() 함수를 취해주어서 위아래를 반전시켜주어서 문제를 해결하였다. function solution(line) { const cod = [] for (let i = 0; i < line.length ; i++) { for (let j = i ; j < line.length ; j++){ const [A,..