본문 바로가기

programmers13

[ 자바스크립트(JavaScript) ] 프로그래머스 level3 - 네트워크 📍 프로그래머스 3단계 - 네트워크 프로그래머스 3단계 - 네트워크 이 문제를 그래프의 개념을 알고 있어야 풀 수 있는 문제이기 때문에 조금 까다로울 수 있다. 결론적으로 visited 배열을 선언하여 노드 방문 여부를 체크해주면 된다. 4번째 줄에 반복문을 사용한 이유는 모든 노드를 한 번씩 탐색하기 위함이다. 만약, 모든 노드가 서로 연결되어있지 않다면 갈 수 없기 때문이다. 이때, 이전에 방문한 노드는 탐색하지 않도록 조건문을 넣어줬다. DFS 함수에서는 node와 연결된 다른 node를 방문하는 로직인데, 현재 노드에서 visited배열로 방문 체크해주고, 다음 노드와 연결되어있다면(computers[node][i]) 해당 노드로 이동하는데 이때 주의할 점은 방문하지 않은 노드여야 한다는 점이다... 2022. 3. 23.
[ 자바스크립트(JavaScript) ] 프로그래머스 level2 - 올바른 괄호 📍 프로그래머스 2단계 - 올바른 괄호 프로그래머스 2단계 - 올바른 괄호 이전에 인프런에서 자바스크립트 알고리즘 강의를 들을 때 풀었던 문제(글 보기)이다. stack을 이용하면 간단하게 풀 수 있다. 열린 괄호일 때 stack에 집어넣고, 닫힌괄호가 나오면 stack에 열린괄호가 있으면 pop해주고 값이 없다면 그것은 올바르지 않은 괄호기 때문에 false를 return해주면 된다. function solution(s) { const stack = []; for (const parenthesis of s) { if (parenthesis === "(") stack.push(parenthesis); else { if (stack[stack.length - 1]) stack.pop(); else retu.. 2022. 3. 23.
[ 자바스크립트(JavaScript) ] 프로그래머스 level2 - 오픈채팅방 📍 프로그래머스 2단계 - 오픈채팅방 프로그래머스 2단계 - 오픈채팅방 ⚡️ 나의 풀이 처음 문제를 풀기 전 문제 분류에 2019 KAKAO BLIND RECRUITMENT 라고 되어있어서 카카오 문제니까 어렵지 않을까?라고 했는데 어렵지 않았다. 문제의 내용은 길었지만 코드는 짧게 작성할 수 있는 문제였다. 결론적으로 반복문을 2번 사용했는데 처음 닉네임이 변경되는 모든 과정에 반복문을 한번 사용하고, 모든 기록이 처리된 마지막에 반복문을 한번 더 사용했다. 세부과정은 다음과 같다. idInfo는 new Map()으로 선언하여 hash값을 이용했다. status가 Enter 혹은 Change일 때 idInfo의 nickName을 변경한다. 모든 기록이 처리된 후 채팅방 메시지를 출력한다. status가.. 2021. 11. 8.
[ 자바스크립트(JavaScript) ] 프로그래머스 level2 - 다리를 지나는 트럭 📍 프로그래머스 2단계 - 다리를 지나는 트럭 프로그래머스 2단계 - 다리를 지나는 트럭 ⚡️ 나의 풀이 이전에 python으로 풀어본 경험이 있다. 오랜만에 풀어서 이전에 푼 기억은 잘 나지 않았다. 처음에는 조금 헤맸는데 나름의 순서를 그려가며 풀었다. 제일 눈여겨봐야 할 점은 bridge는 초마다 항상 shift()를 해주고 weight는 bridge의 shift()값을 더해준다는 것과 bridge의 초기값은 bridge_length만큼 0으로 초기화해준다. 그래야 트럭이 bridge_length만큼 bridge에 올라갈 수 있다. bridge는 weight와 관계없이 초마다 shift()한다. trucks가 남아있으면 weight의 조건을 따진다. 만약, 현재 무게와 다음에 올 트럭의 무게를 더했.. 2021. 10. 26.
[ 자바스크립트(JavaScript) ] 프로그래머스 level2 - 기능개발 📍 프로그래머스 2단계 - 기능개발 프로그래머스 2단계 - 기능개발 ⚡️ 나의 풀이 이 문제에서 제일 크게 거쳐야 하는 기능은 2가지로 나뉜다. 첫 번째는 progresses와 speeds 값을 이용해서 배포가 며칠이 소요되는지 구해야 하고, 두 번째는 배포 날짜를 모아둔 값에서 제일 처음부터 배포를 할 때 다음 값이 현재 배포 일 수보다 작으면 같이 배포되고, 더 크면 나중에 배포되는 cnt값을 구해야 한다. 내가 풀 때는 첫 번째까지는 무난하게 구했는데 두 번째 cnt를 구하는 방식이 좀처럼 떠오르지 않았다. 도저히 방법이 떠오르지 않아 다른 사람은 어떻게 풀었는지 봤는데, for문 안에 i, j를 동시에 선언하고 count를 한 게 너무 신기했다. 거기에 j는 전치연산자를 사용했는데, 전치연산자는 .. 2021. 10. 22.