Algorithm Problem/JavaScript

    [javascript] 프로그래머스 - 괄호 회전하기(월간 코드 챌린지 시즌2)

    [javascript] 프로그래머스 - 괄호 회전하기(월간 코드 챌린지 시즌2)

    🤔문제 해결 괄호 회전 괄호 체크 스택을 이용하여 괄호의 짝이 맞는지 체크 주어진 괄호(회전을 마친 괄호)를 쪼개서 하나씩 가져온다 가져온 괄호가 왼쪽 괄호이면 스택에 넣고 오른쪽 괄호이면 스택의 제일 위에있는 괄호와 비교하여 짝이 맞는지 체크 짝이 맞지 않으면 올바른 괄호가 아니다. 스택이 비어있으면 올바른 괄호가 아니다. 괄호 체크가 끝나고 스택에 남아있는 괄호가 있으면 올바른 괄호가 아니다 💨 오브젝트의 키, 밸류 가져오기: Object.keys(my_object), Object.values(my_object) 💨 배열에 특정 요소 포함 여부: my_list.includes(my_elem) 💻소스 코드 function solution(s) { var answer = 0; var length = s...

    [javascript] 프로그래머스 - 거리두기 확인하기(2021 카카오 채용연계형 인턴십)

    [javascript] 프로그래머스 - 거리두기 확인하기(2021 카카오 채용연계형 인턴십)

    🤔문제 해결 한 방안의 모든 P에 대하여 차례로 주변을 탐색했다. 약간 BFS 느낌🤔 O를 만나면 계속탐색 P를 만나면 멈춘다. - 거리두기 지켜지지 않음 탐색 중 P에 대하여 거리가 2가 되면 더 이상 그 지점에서는 탐색을 멈춘다. 그러므로 탐색 중 다른 P를 만났다는 말은 거리가 2 이하이기 때문에 탈락 X는 무시 💨 파이썬으로 풀던 느낌으로 풀었다. break를 한번에 걸어주는 방법이 없나... 💻소스 코드 function solution(places) { var answer = []; var length = places[0].length; var dx = [-1, 1, 0, 0] // 상 하 좌 우 var dy = [0, 0, -1, 1] for (var place of places) { var ..

    [javascript] 프로그래머스 - 숫자 문자열과 영단어(2021 카카오 채용연계형 인턴쉽)

    [javascript] 프로그래머스 - 숫자 문자열과 영단어(2021 카카오 채용연계형 인턴쉽)

    🤔문제 해결 문자열에서 특정 문자(들)를 찾아 바꾸는 replace 를 사용 대응되는 문자-숫자 오브젝트를 만들고 변수를 치환하고 싶은 문자로 사용하기 위해서 정규 표현식을 이용했다. 💨 💻소스 코드 function solution(s) { var replaceObj = { zero: 0, one: 1, two: 2, three: 3, four: 4, five: 5, six: 6, seven: 7, eight: 8, nine: 9, } for (var key in replaceObj) { s = s.replace(new RegExp(key, "g"), replaceObj[key]); // g는 옵션, g를 안넣으면 처음 만나는 문자 1개만 바꾼다. } return parseInt(s); } 📕문제 확인 ..

    [javascript] 프로그래머스 - 행렬 테두리 회전하기(2021 Dev-Matching: 웹 백엔드 개발자(상반기))

    🤔문제 해결 Array.from 을 이용하여 2차원 행렬 만들기 테두리 가져오기 범위 내에서 테두리만 오른쪽, 아래, 왼쪽, 위로 차례로 이동 이동하면서 값을 리스트에 저장, 2차원 배열의 값을 바꿔준다(회전) 리스트의 가장 작은 값을 answer 에 저장 💨 2차원 배열 만들기 Array.from, 배열의 최소값 구하기 Math.min.apply(null, []); 이것 보다는 Math.min(...[]); 이 좋아보임(일단 가독성) 💻소스 코드 function solution(rows, columns, queries) { var answer = []; // 1씩 증가하는 2차원 행렬 만들기 const arr = Array.from(Array(rows), () => new Array(columns));..

    [javascript] 프로그래머스 - 로또의 최고 순위와 최저 순위(2021 Dev-Matching: 웹 백엔드 개발자(상반기))

    🤔문제 해결 1. filter와 includes를 이용해서 로또 번호가 당첨 번호에 포함된 개수를 구함 2. filter를 이용해서 로또 번호의 0의 개수를 구함 3. 최소 당첨 개수는 그냥 당첨 개수 4. 최대 당첨 개수는 최소 당첨 개수 + 0의 개수 5. 순위를 구함 💨 💻소스 코드 function solution(lottos, win_nums) { var answer = []; var minWinningCnt = lottos.filter(number => win_nums.includes(number)).length; var maxWinningCnt = minWinningCnt + lottos.filter(number => number === 0).length; var rank = [6, 6, 5,..

    [javascript] 프로그래머스 - 네트워크

    [javascript] 프로그래머스 - 네트워크

    🤔문제 해결 Lv3 | DFS 몇개의 싸이클이 있는 지 찾아야 한다. DFS(BFS)를 이용해도 무방하다. 전체 네트워크 중 하나를 차례로 선택한다. DFS로 visited를 체크하며 돌린다. DFS가 끝나면 그게 한 싸이클이 된다. (네트워크의 수) 아직 방문하지 않은 나머지 네트워크를 하나씩 차례로 선택하면서 위의 과정을 반복한다. 💻소스 코드 function solution(n, computers) { var answer = 0; let visited = Array(n).fill(0) let stack = [] for (let i = 0; i 0)..