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