no image
[JavaScript] 방문 길이 - 프로그래머스
방문 길이 - 프로그래머스 문제 링크https://school.programmers.co.kr/learn/courses/30/lessons/49994 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  문제 복기경로 문제는 예전에 Dynamic programming을 공부할 때, 자주 접한 케이스이다.경로 문제는 대부분 유사한 형식을 가지고 있는 것 같다. 이번 문제도 동일하다.방향 정보를 담고 있는 move 객체dirs을 순회하면서 move[dir]을 구조 분해하여 각각의 좌표를 업데이트해주는 로직경계를 벗어났는지 판단해주는 예외처리적어도 위의 3가지는 자주 등장하는 코드이니 익숙하지 않다면 익혀주는게 ..
2024.12.15
no image
[JavaScript] n진수 게임 - 프로그래머스
n진수 게임 - 프로그래머스 문제 링크https://school.programmers.co.kr/learn/courses/30/lessons/17687 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  문제 복기지난 문제와 마찬가지로 이번 문제도 2018 카카오 3차 코딩테스트 문제 중 하나인 것 같다.지난 문제와 조금 더 쉽게 느껴졌다. 지난 문제는 재귀함수로 문제를 풀었다면,이번에는 단순 반복문으로 문제를 해결해서 그런 것 같다. 매개변수가 많아서 당황할 수 있지만, 단계별로 어떻게 매개변수를 써야하고,어떤 작업을 순차적으로 할 것인지 정리하여 쉽게 문제를 해결할 수 있었다.  문제 풀이1단계처음으로..
2024.12.14
no image
[JavaScript] 압축 - 프로그래머스
압축 - 프로그래머스 문제 링크https://school.programmers.co.kr/learn/courses/30/lessons/17684 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  문제 복기2018 카카오 블라인드 코딩테스트 문제였다. 3차라고 붙어져있는데, 3차 코딩테스트 문제 중 하나였던 것 같다. 카카오 문제의 특징은 지문이 길지만, 상당히 친절한 편인 것 같다. 꼼꼼하게 읽으면서 구현하면 생각보다 쉽다는 느낌을 받는다.당황하지 않고, 차분하게 문제를 읽는 습관을 들이는데 좋은 훈련이 되는 것 같다.  문제로 넘어가보자.문제에서는 친절하게 압축 과정을 알려주고, 예시까지 보여줬다.  ..
2024.12.12
no image
[JavaScript] 롤케이크 자르기 - 프로그래머스
롤케이크 자르기 - 프로그래머스 문제복기이 문제는 시간복잡도를 고려하지 않았을 때는 쉽게 풀 수 있었지만,시간복잡도까지 고려했을 때는 아이디어가 필요했다.  시간초과 Ver.중복을 피해야 하기 때문에 set을 사용했다.topping의 길이는 최대 1,000,000까지 가능했다.시간초과 버전에서는 slice를 사용하여 시간초과가 발생했는데, slice는 begin부터 end까지 얕은 복사본을 새로운 배열로 반환하는 javascript 메서드다. 결국 O(n)의 시간복잡도를 갖는 알고리즘을 만들어야 하는 상황에서반복문 속의 slice 사용은 O(n * (n/2)) => O(n^2) 의 시간복잡도를 만든다.function solution(topping) { let sum = 0; for(let i ..
2024.12.10
no image
[JavaScript] 뉴스 클러스터링 - 프로그래머스
뉴스 클러스터링 - 프로그래머스 문제링크https://school.programmers.co.kr/learn/courses/30/lessons/17677  문제복기 다중집합과 자카드 유사도에 대한 개념이 나온다.개념은 모두 지문에서 알려주지만, 다중집합을 구현하는 것은 어렵지 않았지만다중집합 간에 교집합과 합집합을 구하는 부분에서 어려움을 느꼈다.    1단계1단계에서는 두 문자열의 다중집합을 구현하는 로직을 작성한다.다중집합을 우선 생성해야 교집합과 합집합을 구하고, 자카드 유사도를 구할 수 있기 때문이다.  다중집합을 생성하는 로직은 아래의 코드와 같이 구현했다.반복문을 돌면서 하나씩 붙여주고, 알파벳이 아닌 문자는 continue하는 방식으로 구현했다. 마지막으로 대소문자 구분이 없는 점을 고려해주..
2024.12.10
no image
[JavaScript] 주식가격 - 스택/큐
프로그래머스 알고리즘 고득점 Kit - 스택/큐 문제설명n초 간의 주가를 초 단위로 기록한 배열 prices가 매개변수로 주어질 때, 각 초의 주가를 기준으로 해당 초 부터 n초 사이에 가격이 떨어지지 않은 시간은 몇 초인지 배열에 담아 return 하도록 solution 함수를 완성하세요. 제한사항prices의 각 가격은 1 이상 10,000 이하인 자연수입니다.prices의 길이 n은 2 이상 100,000 이하입니다. (2  입출력 예prices : [1, 2, 3, 2, 3]return : [4, 3, 1, 1, 0] 입출력 예 설명1초의 주가는 1이며 1초부터 5초까지 총 4초간 주가를 유지했습니다.2초의 주가는 2이며 2초부터 5초까지 총 3초간 주가를 유지했습니다.3초의 주가는 3이며 4초의..
2024.11.24
no image
[JavaScript] 다리를 지나는 트럭 - 스택/큐
프로그래머스 알고리즘 고득점 Kit 문제 설명 트럭 여러 대가 강을 가로지르는 일차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 다리에는 트럭이 최대 bridge_length대 올라갈 수 있으며, 다리는 weight 이하까지의 무게를 견딜 수 있습니다. 단, 다리에 완전히 오르지 않은 트럭의 무게는 무시합니다. 예를 들어, 트럭 2대가 올라갈 수 있고 무게를 10kg까지 견디는 다리가 있습니다. 무게가 [7, 4, 5, 6]kg인 트럭이 순서대로 최단 시간 안에 다리를 건너려면 다음과 같이 건너야 합니다. 따라서, 모든 트럭이 다리를 지나려면 최소 8초가 걸립니다. solution 함수의 매개변수로 다리에 올라갈 수 있는 트럭 수 brid..
2024.11.22
no image
[JavaScript] 베스트앨범 - 해시
프로그래머스  알고리즘 고득점 Kit - 해시편문제 설명스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트앨범을 출시하려 합니다.노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. 속한 노래가 많이 재생된 장르를 먼저 수록합니다.장르 내에서 많이 재생된 노래를 먼저 수록합니다.장르 내에서 재생 횟수가 같은 노래 중에서는 고유 번호가 낮은 노래를 먼저 수록합니다.노래의 장르를 나타내는 문자열 배열 genres와 노래별 재생 횟수를 나타내는 정수 배열 plays가 주어질 때, 베스트 앨범에 들어갈 노래의 고유 번호를 순서대로 return 하도록 solution 함수를 완성하세요. 제한사항genres[i]는 고유번호가 i인 노래의 장르입니다.plays[i]는 고유번..
2024.11.17
no image
[JavaScript] 전력망을 둘로 나누기 - 완전탐색
프로그래머스 - 알고리즘 고득점 Kit 완전탐색 편프로그래머스 완전탐색 마지막편입니다.이 문제는 개인적으로 어렵다고 느껴서 두고두고 공부할 필요성을 느꼈습니다. 문제보러가기 문제 설명n개의 송전탑이 전선을 통해 하나의 트리 형태로 연결되어 있습니다.당신은 이 전선들 중 하나를 끊어서 현재의 전력망 네트워크를 2개로 분할하려고 합니다.이때, 두 전력망이 갖게 되는 송전탑의 개수를 최대한 비슷하게 맞추고자 합니다.송전탑의 개수 n, 그리고 전선 정보 wires가 매개변수로 주어집니다. 전선들 중 하나를 끊어서 송전탑 개수가 가능한 비슷하도록 두 전력망으로 나누었을 때, 두 전력망이 가지고 있는 송전탑 개수의 차이(절대값)를 return 하도록 solution 함수를 완성해주세요. 제한 사항  문제 풀이전력망..
2024.11.06