목록Algorithm (111)
S E P H ' S
코드트리 | 코딩테스트 준비를 위한 알고리즘 정석 최고의 알고리즘 전문가들이 체계적인 코딩테스트 문제 유형 분류와 학습 커리큘럼을 제시합니다. 알고리즘 학습의 A to Z를 경험해보세요! www.codetree.ai 문제 풀이 조건에 맞춰서 차근차근히 풀어나가면 되는 구현 문제이다. 고려해야할 것이 많아서 처음 설계를 할 때 꼼꼼히 따져봐야한다. 문제를 풀어나가는 핵심 순서는 다음과 같다. 1. K번 동안 로직을 반복. 포탑이 한개만 남게 된다면 반복횟수가 K번이 되지 않았더라도 그 포탑의 공격력을 정답으로 하고 종료. 2. 가장 약한 포탑 선정 2-1. 가장 약한 포탑이 공격자이므로 턴을 저장. 2-2. 가장 약한 포탑의 공격력을 N + M 만큼 증가. 3. 가장 강한 포탑 선정 4. 레이저 공격이 가..
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이 조건에 맞게 조이스틱 조작 횟수의 최솟값을 구하는 문제였다. 조작 횟수의 최소값은 두가지로 나누어서 구하는 것이 핵심이다. 1. 알파벳 선택하기 A 에서 주어진 알파벳까지 조작하는데 A ~ 주어진 알파벳 의 값과 주어진 알파벳 ~ Z + 1 (A에서 반대로 조작하는 것도 있으므로 주어진 알파벳에서 Z 까지의 값과 A를 포함한 +1 까지 해준다.) 중 최소를 선택한다. 2. 커서 이동횟수 구하기 가장 헤맸던 부분이다. 처음엔 while문을 통해서 idx가 가리키는 값 기준으로 왼쪽, 오른쪽 값을 확인..
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이 정말 쉬운 문제지만 조건 확인에 덜렁이는 나같은 사람에게는 좋은 문제였다. prices의 모든 값을 큐에 넣은 후 큐의 값이 없을때까지 반복하면서 현재 값이 prices의 다음 값들과 비교해가면서 작아질때 까지 카운트를 1씩 늘려가면 되는 문제이다. 빼먹었던 조건은 현재 값보다 다음 값이 작아졌을 때 카운트를 1을 증가시키고 break를 해주어야 한다. 몇 초뒤에 가격이 떨어졌는지를 정답으로 요구하고 있기 때문에 작아진 다음에 1초를 더해야 했고 break를 하지 않으면 계속해서 다음 값을 비교하면..
다익스트라 알고리즘 (Using Priority Queue) 다익스트라 알고리즘의 기본 구성은 지난 포스트에서 다뤘다. 다익스트라는 한 노드에서 다른 노드들까지 가는 모든 최소 비용을 구하는 알고리즘이었다. 여기서 두 가지 과정을 반복적으로 수행하면서 목적을 달성하게 된다. 방문하지 않은 노드들 중에 가장 비용이 적은 노드를 다음 노드로 삼는다. (그리디 알고리즘) 해당 노드로부터 갈 수 있는 노드들의 비용을 갱신한다. (다이나믹 프로그래밍) 여기서 방문하지 않은 노드들 중에 가장 비용이 적은 노드를 찾기 위해 최악의 경우 모든 노드를 살펴봐야 할 수도 있다는 점이 최적화할 수 있는 부분이었다. 이를 개선하기 위한 방법 중 우선순위 큐를 활용한 다익스트라를 구현해보려고 한다. 다익스트라 알고리즘 구현 (..