본문 바로가기

전체 글61

정렬-가장 큰 수 프로그래머스(정렬) 가장 큰 수 해당 문제는 비교하는 두 문자를 이어 붙인 수가 더 큰것을 상위로 올리는 Comparator 를 구현하여 풀었습니다. 처음 문제를 보고 문제를 잘못 이해하여 입력 받은 숫자의 자릿수들을 전부 추출하여 정렬하여 answer를 만들었었습니다. 정상적으로 이해 한 후에는 입력 받은 숫자를 문자로 바꿔 역순 정렬 하면 되겠다 하여 했지만, 생각했던 동작을 하지 못했습니다. 다른 방법으로는 두 문자를 비교 할때 최고 자릿수의 숫자를 비교하는 식으로 하고 최고 자릿수의 숫자가 동일 한 경우에 대해 같은 숫자를 채워 비교하는 식으로 구현하려고 했습니다. 예를들어 34, 3, 30 의경우 34, 33, 30 이라 생각하고 정렬 하게 하려 했고, 생각 했던 경우의 수는 모두 통과하였지만,.. 2022. 2. 15.
정렬-K번째 수 프로그래머스(정렬)- K번째 수 해당 문제는 간단하게 입력받은 command 를 분석해 입력받은 array를 이용해 신규 배열을 만든 후 해당 배열을 정렬하여 n번째 수를 추출해 답변 배열에 넣어주는 식으로 구현하였습니다. 난이도에 맞게 java Arrays class를 이용해 쉽게 구현하고 풀 수 있었습니다. public int[] solution(int[] array, int[][] commands) { int commandLength = commands.length; int[] answer = new int[commandLength]; int i = 0; for (int[] command : commands) { int begin = command[0]; int end = command[1]; in.. 2022. 2. 14.
힙(Heap)-이중우선순위 프로그래머스(힙) - 이중우선순위 해당 문제는 오름차순(최소힙), 내림차순(최대힙)으로 정렬된 우선순위큐를 사용하여 풀었습니다. Insert 커맨드에서는 두 우선순위큐에 동시에 넣고, 그외의 Delete 커맨드에서는 value에 맞게 최대힙에서 poll() 할경우에는 그값을 최소힙에서 찾아 제거 하는 식으로 구현하였습니다. 대신 큐에 아무값도 없을 경우에는 제한 조건에 맞춰 아무 동작도 하지 않게 조건문을 추가했습니다. public int\[\] solution(String\[\] operations) { PriorityQueue ascQueue = new PriorityQueue(); PriorityQueue descQueue = new PriorityQueue(Comparator.reverseOrde.. 2022. 2. 11.