본문 바로가기

Algorithm272

[ 자바스크립트(JavaScript) ] 프로그래머스 level3 - 네트워크 📍 프로그래머스 3단계 - 네트워크 프로그래머스 3단계 - 네트워크 이 문제를 그래프의 개념을 알고 있어야 풀 수 있는 문제이기 때문에 조금 까다로울 수 있다. 결론적으로 visited 배열을 선언하여 노드 방문 여부를 체크해주면 된다. 4번째 줄에 반복문을 사용한 이유는 모든 노드를 한 번씩 탐색하기 위함이다. 만약, 모든 노드가 서로 연결되어있지 않다면 갈 수 없기 때문이다. 이때, 이전에 방문한 노드는 탐색하지 않도록 조건문을 넣어줬다. DFS 함수에서는 node와 연결된 다른 node를 방문하는 로직인데, 현재 노드에서 visited배열로 방문 체크해주고, 다음 노드와 연결되어있다면(computers[node][i]) 해당 노드로 이동하는데 이때 주의할 점은 방문하지 않은 노드여야 한다는 점이다... 2022. 3. 23.
[ 자바스크립트(JavaScript) ] 프로그래머스 level2 - 가장 큰 수 📍 프로그래머스 2단계 - 가장 큰 수 프로그래머스 2단계 - 가장 큰 수 정수를 이어 붙일 때 사칙연산을 하는 게 아니기 때문에 map함수를 이용하여 numbers를 모두 String으로 변경해준다. 이후에 sort함수를 이용하여 인자끼리 대소관계를 비교해준다. 여기서 주의할 점은 비교 순서를 헷갈리지 말아야 한다. 만약, numbers가 [6, 10, 2]가 주어지면 첫번째 비교대상에서 인자 a는 10, b는 6이다. 따라서 b+a는 610이고, a+b는 106이다. 서로의 값을 빼면 양수이기 때문에 순서를 유지하고 다음 차례로 넘어간다. 만약, 서로의 값을 뺐을 때 음수라면 위치를 바꿔준다. 마지막으로 입력이 모두 0일 때가 있는데, 이때는 Number형태로 변환했을 때 값이 0인지 구별하면 된다... 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.