Javascript(47)
-
[JS] 등산코스 정하기 - 다익스트라 알고리즘에 대해서
안녕하세요! 프로그래머스가 2022 카카오 인턴 코딩테스트 문제를 풀어줬네요. 일단 등산코스부터 한번 볼까 합니다. 이 문제는 다익스트라(dijkstra) 알고리즘을 활용해야하는 문제입니다. 문제를 읽기 전에 먼저 다익스트라 알고리즘에 대해 알아볼 필요가 있겠네요. 다익스트라(Dijkstra) 알고리즘: 간선에 가중치(weight)가 달라질 때.. 아래와 같은 그래프가 있다고 해볼까요? 간선에 적힌 노란 숫자는 그 노드로 가기까지 필요한 가중치(weight)라고 합니다. 가중치가 있는 경로에서는 bfs를 사용할 수 없습니다. 왜냐면 visited를 관리할 수 없기 때문입니다. 일반적인 bfs라면 노드 1에서 5를 향해 출발 할때 노드 4를 방문 처리하지만, 여긴 다릅니다. 가중치가 있기 때문에 노드 4를..
2022.08.24 -
[JS] 전력망을 둘로 나누기 - bfs에서 약간만 응용해보자!
간만에 레벨2 문제네요.완전 탐색 문제입니다. 제가 푼 방법이 약간 비효율적인 것 같아서 "이사람은 이렇게 했구나"만 보셔도 충분할 것 같습니다.그럼 같이 볼까요? 문제 요약 n개의 송전탑이 전선을 통해 하나의 트리 형태로 연결되어 있습니다. 당신은 이 전선들 중 하나를 끊어서 현재의 전력망 네트워크를 2개로 분할하려고 합니다. 이때, 두 전력망이 갖게 되는 송전탑의 개수를 최대한 비슷하게 맞추고자 합니다. 송전탑의 개수 n, 그리고 전선 정보 wires가 매개변수로 주어집니다. 전선들 중 하나를 끊어서 송전탑 개수가 가능한 비슷하도록 두 전력망으로 나누었을 때, 두 전력망이 가지고 있는 송전탑 개수의 차이(절대값)를 return 하도록 solution 함수를 완성해주세요. 제한사항 n은 2 이상 100..
2022.08.20 -
[JS] 표 편집 - 양방향 연결리스트(Linked List)를 사용해보자!
안녕하세요. 또 어려운 문제가 왔습니다... 이번엔 연결리스트에 관한 문제입니다. 특히 삭제나 삽입에 대해서 알아볼 수 있는 좋은 기회입니당.. 자 같이 한 번 볼까요? (그리고 이 문제 js로 구현하신 블로거 분들이 다 한 코드를 보고 복사하신건지 다 코드가 똑같더라구요..) 문제 요약 업무용 소프트웨어를 개발하는 니니즈웍스의 인턴인 앙몬드는 명령어 기반으로 표의 행을 선택, 삭제, 복구하는 프로그램을 작성하는 과제를 맡았습니다. 세부 요구 사항은 다음과 같습니다 위 그림에서 파란색으로 칠해진 칸은 현재 선택된 행을 나타냅니다. 단, 한 번에 한 행만 선택할 수 있으며, 표의 범위(0행 ~ 마지막 행)를 벗어날 수 없습니다. 이때, 다음과 같은 명령어를 이용하여 표를 편집합니다. "U X": 현재 선택..
2022.08.18 -
[JS] 연결리스트에 대해서
안녕하세요. 카카오 2021 인턴 표 편집을 하던도중 이건 그냥 봐도 연결리스트를 쓰라는 것 같더라구용. 자바스크립트에서 한 번도 연결리스트를 써본 적이 없었는데 구현 코드를 보니 상당합니다. 이건 정리 한 번 해야겠어요! 자 그럼 같이 한 번 보죠! 1. 연결리스트가 유용한 상황 연결리스트는 배열 중간에 자료를 없앤다던가, 새로 삽입해야한다던가 하는 상황에서 매우 유용한 자료입니다. 일반적인 stack 구조에서는 pop이나 push가 아닌 중간에서 자료를 조작해줘야하는 상황이 오면, 뒤에 모든 요소를 같이 조작해줘야하거든요. 이런 구조에서 유용하게 쓰입니다. 그럼 javascript에서 구현을 한 번 알아볼까요? 2. javascript에서 구현 팁 큐나 힙처럼 배열안에서 조작한다면 결국엔 나중에 fi..
2022.08.17 -
[JS] 셔틀버스 - 시간을 비교할땐 항상 조심하자!
2018년 카카오 채용에 있었던 문제입니다.문제도 뭔가 요즘처럼 복잡하지도 않고 직관적입니다.다만, 케이스 분류할 때 조심해야할 점들이 몇몇 가지 있어서 같이 이야기해보면 좋을 것 같습니다.자 같이 볼까요? 문제 요약 카카오에서는 무료 셔틀버스를 운행하기 때문에 판교역에서 편하게 사무실로 올 수 있다. 카카오의 직원은 서로를 '크루'라고 부르는데, 아침마다 많은 크루들이 이 셔틀을 이용하여 출근한다. 이 문제에서는 편의를 위해 셔틀은 다음과 같은 규칙으로 운행한다고 가정하자. 셔틀은 09:00부터 총 n회 t분 간격으로 역에 도착하며, 하나의 셔틀에는 최대 m명의 승객이 탈 수 있다. 셔틀은 도착했을 때 도착한 순간에 대기열에 선 크루까지 포함해서 대기 순서대로 태우고 바로 출발한다. 예를 들어 09:0..
2022.08.16 -
[JS] 자물쇠와 열쇠 - 디버깅 지옥 멈춰! true/false 멈춰!
이 문제 진짜 개애애빡치는게 뭐 결과가 true/false 두 개여가지고 어디서 문제 있는건지 알 수도 없고.. 결국엔 질문 게시판에 계신 현자분의 아이디어를 쓱싹해서 완성했네용진짜 지옥의 백트래킹입니다.같이 한 번 볼까요? 문제 요약 잠겨있는 자물쇠는 격자 한 칸의 크기가 1 x 1인 N x N 크기의 정사각 격자 형태이고 특이한 모양의 열쇠는 M x M 크기인 정사각 격자 형태로 되어 있습니다. 자물쇠에는 홈이 파여 있고 열쇠 또한 홈과 돌기 부분이 있습니다. 열쇠는 회전과 이동이 가능하며 열쇠의 돌기 부분을 자물쇠의 홈 부분에 딱 맞게 채우면 자물쇠가 열리게 되는 구조입니다. 자물쇠 영역을 벗어난 부분에 있는 열쇠의 홈과 돌기는 자물쇠를 여는 데 영향을 주지 않지만, 자물쇠 영역 내에서는 열쇠의 돌..
2022.08.10