본문 바로가기

전체 글61

DP - N으로 표현 프로그래머스 (DP) - N으로 표현 해당 문제는 1번재와 2번째의 표현 가능 한 경우를 구한 후 3번째 부터는 첫번째와 2번째 가능수들의 사칙연산 조합 4번째는 1번째와 3번째, 2번째와 2번째의 가능 수들의 사칙연산 조합을 가지도록 로직을 구현했습니다. 순차적으로 모든 경우의 수를 계산하면서 number를 찾게되면 해당 번째를 return 하고 8번째를 넘게되면 -1을 return하도록 로직을 구현했습니다. 4번째를 구할때 3번째와 1번째의 조합은 1번째와 3번째의 조합과 같으므로 그 부분을 조합하는것은 예외로 처리했습니다. public int solution(int N, int number) { if (N == number) { return 1; } List expressList = new Arra.. 2022. 3. 4.
탐욕법 - 단속카메라 프로그래머스(탐욕법) - 단속카메라 해당 문제는 생각하기에 따라 어려울 수도 있고 쉬울수도 있을듯합니다. 먼저입력받은 route를 진출지점 기준으로 오름차순으로 정렬한 후 진입지점이 카메라 위치보다 먼곳에 위치하면 진출지점에 카메라를 설치하도록 합니다. 진출지점 기준으로 오름차순으로 정렬했기 때문에 다음 route의 진입 지점이 카메라 위치보다 작다면 카메라를 설치할 필요가 없습니다. public int solution(int[][] routes) { int answer = 0; PriorityQueue priorityQueue = new PriorityQueue(Comparator.comparingInt(o -> o[1])); int cameraIndex = Integer.MIN_VALUE; for (.. 2022. 3. 3.
탐욕법 - 섬 연결하기 프로그래머스(탐욕법) - 섬 연결하기 해당 문제를 봤을때 제한사항으로 costs의 길이가 있기에, 한 좌표에서 각 좌표까지의 path costs를 구해 각 좌표별 최소 path를 구한 후 set에 다리를 연결 하는 방식으로 진행하려고 했습니다. 정상적으로 풀지 못해, 결국 인터넷 검색의 힘을 구했고, 해당 문제가 최소신장트리(MST), Kruskal(크루스칼) 알고리즘 과 관련된 문제라는 것을 알 수 있었습니다. public int solution(int n, int[][] costs) { int answer = 0; int[] parent = new int[n]; PriorityQueue priorityQueue = new PriorityQueue(Comparator.comparingInt(o -> o.. 2022. 3. 2.