본문 바로가기

프로그래머스56

알고리즘(자동 완성) * 알고리즘 트라이 * 로직 트라이 구조를 통해 입력된 단어들의 횟수를 카운팅 해놓는다 각 단어들을 한 글자씩 검색 해당 글자가 1번만 사용되었다면 이후의 글자도 하나만 존재하기 때문에 해당 사이클 횟수를 리턴 만약 검색하려는 단어의 마지막 글자까지 왔다면 => 해당 단어의 수를 리턴(사이클 횟수와 같음) 위 과정을 반복해 답을 누적한다 //자동완성 class Trie { public NodeInfo root; public Trie() { this.root = new NodeInfo(' '); } public void insert(String word) { NodeInfo current = root; for(int s=0; s 2020. 3. 31.
알고리즘(블록 게임) [블록 게임] * 로직 문제에 주어진 블록을 직사각형으로 채우게 된다면 사이즈는 2*3 or 3*2 형태가 된다 (0,0)부터 기준점을 한 칸씩 옮기면서 2*3인 경우와 3*2인 경우를 고려한다 해당 사이즈만큼 탐색하면서 값이 0인 곳에서는 검은 블록을 위에서부터 떨어뜨릴 수 있는지 확인한다 만약 중간에 다른 블록이 있다면 불가능 없다면 가능 검은 블록을 사용한 개수를 카운팅한다 해당 사이즈만큼 탐색하면서 만약 검은 블록의 개수를 2개 초과한 경우엔 불가능 처리를 한다 (주어진 블록들의 개수는 항상 4개이기 때문에 -> 6 - 2 = 4) 검은 블록의 개수까지 만족한다면 해당 사이즈만큼의 값은 0으로 갱신한다 위 과정을 반복하며, 만약 모든 기준점들을 다 돌았을때 제거된 블록이 하나도 없다면 종료한다 /.. 2020. 3. 30.
알고리즘(셔틀버스, 무지의 먹방 라이브) [셔틀 버스] * 로직 시간을 분으로 변환하여 우선순위 큐에 저장한다 우선순위 큐는 시간 기준 오름차순 정렬이다 마지막 운행 횟수 전까지는 대기열에 있는 인원들을 출발시킨다 마지막 운행 시점에서 m-1명을 태운 뒤 콘의 탑승 가능 시간을 정한다 큐가 비어있다면 => 마지막 셔틀의 출발시간에 탑승 가능하다 큐가 비어있지 않다면 제일 빠른 대기열 시간 > 마지막 셔틀의 출발시간 => 마지막 셔틀의 출발시간에 탑승 가능하다 제일 빠른 대기열 시간 제일 빠른 대기열 시간 - 1 시간에 탑승 가능하다 탑승 가능한 값을 다시 시간 형태로 변환한다 //셔틀 버스(17678) import java.util.Comparator; import java.util.PriorityQueue; public class Proble.. 2020. 3. 26.