Algorithm/JavaScript
-
[PRO] 프로그래머스 Lv.2 두 큐 합 같게 만들기 (Javascript)
문제https://school.programmers.co.kr/learn/courses/30/lessons/118667 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 해석접근 방법주어진 두 큐의 합을 같게 만들 수 있는 최소 횟수 계산 풀이 과정두 큐의 차이(q1의 합계 - q2의 합계)를 sum에 저장합니다. 그리고 시간 복잡도를 고려해 원소를 shift()하는 대신 탐색해야 할 원소의 인덱스를 변수로 관리합니다. sum이 양수면 q2의 원소를 q1에 넣고, 음수면 q1의 원소를 q2에 넣습니다. 위 작업을 while문을 통해 반복합니다. 단, 다음과 같은 경우 반복을 중지하고 -1을 반..
Algorithm/JavaScript 2024. 11. 27. 23:05 -
[PRO] 프로그래머스 Lv.2 택배상자 (Javascript)
문제https://school.programmers.co.kr/learn/courses/30/lessons/131704 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 해석접근 방법상자를 실어야 하는 순서를 나타내는 배열이 주어졌을 때, 총 몇 개의 상자를 실을 수 있는지 계산하는 문제입니다.이 문제에서는 상자를 요구하는 순서대로 싣기 위해서 보조 컨테이너를 사용합니다. 이 때 컨테이너는 다른 출입구가 없고 오로지 넣은 순서대로 나오게 됩니다.즉 선입선출(FIFO)가 일어나므로 Stack을 사용해 풀 수 있습니다. 풀이 과정추후 수정 예정 전체 코드function solution(order) {..
Algorithm/JavaScript 2024. 11. 21. 15:52 -
[PRO] 프로그래머스 Lv.2 소수 찾기 (Javascript)
문제https://school.programmers.co.kr/learn/courses/30/lessons/42839 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 해석접근 방법주어진 숫자 조각으로 만들 수 있는 소수의 개수를 계산하는 문제입니다.DFS를 사용해 모든 경우의 수를 탐색하면 됩니다. 풀이 과정먼저 소수를 저장할 때 중복을 제거하기 위해 set을 생성합니다. 그리고 소수 판별을 위해 isPrime(n)이라는 소수 판별 함수를 생성합니다.isPrime(n)에서 소수 여부를 판별할 때 탐색 범위는 Math.sqrt(n)까지,즉 n의 제곱근까지만 탐색을 하면 됩니다. n의 제곱근 이상의 ..
Algorithm/JavaScript 2024. 11. 20. 23:33 -
[PRO] 프로그래머스 Lv.2 프로세스 (Javascript)
문제https://school.programmers.co.kr/learn/courses/30/lessons/42587 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 해석접근 방법프로세스를 큐에서 꺼낸 후 우선 순위에 따라 실행하며 특정 프로세스의 실행 순서를 찾기 풀이 과정주어진 프로세스 배열 priorities의 위치를 저장한 배열 locations를 생성해 우선 순위와 해당 프로세스의 위치를 함께 탐색합니다.2차원 배열을 사용하는 대신 1차원 배열 두 개(priorities, locations)를 사용한 이유는 Math.max를 사용해 우선 순위 탐색을 편하게 하기 위해서입니다. 그 후, ..
Algorithm/JavaScript 2024. 11. 19. 23:23 -
[PRO] 프로그래머스 Lv.2 다리를 지나가는 트럭 (Javascript)
문제https://school.programmers.co.kr/learn/courses/30/lessons/42583 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 해석접근 방법트럭이 순서대로 다리를 건널 때 필요한 최소 시간을 계산하는 문제입니다.매 시간마다 다리에 올라간 트럭의 개수와 트럭 하중의 합을 계산하는 것이 핵심입니다. 풀이 과정현재 다리에 올라가있는 트럭들의 하중의 합과 현재 시간을 변수에 할당해 별도로 관리합니다.그리고 다리를 빈 배열로 생성합니다. 이 배열에는 트럭의 하중과 해당 트럭의 경과 시간이 원소로 들어갑니다. 트럭을 순서대로 다리에 올리며 현재 시간과 다리의 상태를 ..
Algorithm/JavaScript 2024. 11. 17. 19:51 -
[PRO] 프로그래머스 Lv.2 전화번호 목록 (Javascript)
문제https://school.programmers.co.kr/learn/courses/30/lessons/42577 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 해석접근 방법전화번호 목록 중에서 어떤 전화번호가 다른 전화번호의 접두사가 되는 경우가 있는지 찾는 문제입니다. 문제에서 전화번호 목록의 길이가 최대 1,000,000이라고 주어졌습니다. 이에 따라 모든 문자열을 1:1로 직접 비교할 경우 효율성이 떨어져 시간초과가 일어날 수 있습니다. 따라서 Set 객체를 사용해 이전에 탐색한 정보를 저장하는 방식으로 구현해야 합니다. 풀이 과정접두사를 체크할 때 자신보다 길이가 짧은 번호만 탐색하도..
Algorithm/JavaScript 2024. 11. 16. 23:06 -
[PRO] 프로그래머스 Lv.2 게임 맵 최단 거리 (Javascript)
문제 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 해석접근 방법2차원 배열로 주어진 게임 맵에서 1, 1에서 n, m까지 도착할 수 있는 최단 거리를 구하는 문제입니다.최단 경로 문제의 경우 경로를 찾는 즉시 탐색을 종료할 수 있는 BFS로 구현할 수 있습니다. 풀이 과정문제에서 요구한 1, 1과 n, m을 편의상 0, 0과 n-1, m-1로 바꾸어 풀이했습니다. bfs 함수를 사용해 인접 칸에 이동합니다.방문 시에는 현재까지 이동한 거리 +1을 2차원 visited 배열에 저장합니다. 만약 탐색 중에 목적지에 도착할 시에는 이동한 거리를 반환합니다.그렇지 않고 모든 좌표를 탐색할 때까지(qu..
Algorithm/JavaScript 2024. 11. 15. 01:06 -
[PRO] 프로그래머스 Lv.2 롤케이크 자르기 (Javascript)
문제 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 해석접근 방법칼로 롤케이크를 두 조각으로 나눌 때, 각 조각에 있는 토핑 종류의 개수가 같은 모든 경우의 수를 계산하는 문제입니다.각 케이스에서 토핑 종류의 개수를 확인할 때 Set, Map 객체를 사용해 효율성을 높일 수 있습니다. 풀이 과정칼을 가장 왼쪽에서부터 한 칸씩 오른쪽으로 이동하며 토핑의 종류를 계산합니다.이 때 중복 계산을 줄이기 위해 칼을 이동할 때 오른쪽에서 왼쪽으로 넘어간 토핑의 정보만 업데이트하면 됩니다.토핑 종류와 개수 탐색을 위해 왼쪽 롤케이크는 Set, 오른쪽 롤케이크는 Map으로 생성합니다. 왼쪽 롤케이크에는 토핑의 ..
Algorithm/JavaScript 2024. 11. 13. 00:55