알고리즘/programmers(46)
-
[JS] 보석 쇼핑: 효율성을 어거지로 통과하는 방법
어제 했던 등산 코스 문제를 보고나니 이문제.. 정말 선녀네요. 길게 말할 것도 없습니다. 그냥 가볼까요? 문제 요약 어피치는 너무 부자라서 보석을 사러가면 진열대의 특정 구간의 모든 보석을 싹쓸이합니다. 이 때 진열된 모든 종류의 보석을 적어도 1개 이상 포함하는 가장 짧은 구간을 찾아서 구매합니다. 가장 짧은 구간을 찾아 return해주세요. 예를 들어 아래 진열대는 4종류의 보석(RUBY, DIA, EMERALD, SAPPHIRE) 8개가 진열된 예시입니다. 진열대 번호 1 2 3 4 5 6 7 8 보석 이름 DIA RUBY RUBY DIA DIA EMERALD SAPPHIRE DIA 진열대의 3번부터 7번까지 5개의 보석을 구매하면 모든 종류의 보석을 적어도 하나 이상씩 포함하게 됩니다. 테스트케..
2022.08.25 -
[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] 셔틀버스 - 시간을 비교할땐 항상 조심하자!
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