본문 바로가기

Java13

Comparable과 Comparator비교 Comparable과 Comparator 은 둘 다 인터페이스(interface)이므로, 내부에 선언된 메소드를 구현해야 사용할 수 있다. [Comparable]Comparable를 살펴보면 내부에 compareTo(T o)만 Override 해주면 된다.https://docs.oracle.com/javase/8/docs/api/ Java Platform SE 8 docs.oracle.com [Comparator]Comparator를 살펴보면 내부에 많은 메서드들이 있지만 compare(T o1, T o2)만 Override된다.나머지 메서드들은 전부 기본구현(default 메서드)이 제공된다.equals(Object obj)는 default 메서드는 아니지만 Object에서 상속받으므로 구현 하지 않아.. 2025. 3. 12.
[프로그래머스/Lv.2] 타겟 넘버 1) DFS함수를 numbers 크기만큼 재귀한다. 이때 총 합이 target과 동일하면 answer을 카운팅 후 numbers 크기만큼 재귀했다면 재귀를 종료한다.2) DFS를 호출 할 때 마다 index값을 올려준다. '-' or '+' 연산을 수행한다. (반복)  class Solution { int arr[]; int targetNum, answer; int arrLength; public int solution(int[] numbers, int target) { answer = 0; targetNum = target; arrLength = numbers.length; arr = new int[arrLength].. 2025. 2. 13.
[프로그래머스/Lv.2] 프로세스 1) 실행 대기 큐 용도의 Queue(q)에 담을 클래스 MyMember를 사용해 문제에서 주어진 순서대로 q에 담는다.2) 우선순위를 내림차순으로 정렬할 Heap(pq)에 담는다.3) pq에서 가장 큰 우선순위 값과 q에서 뽑은 MyMember의 priority값이 같으면 q에서 해당 인스턴스를 제거하고 그렇지 않으면 다시 q에 넣는다.(반복) import java.util.*;class Solution { static class MyMember{ int priority; int location; public MyMember(int priority, int location) { this.priority = priority; .. 2025. 2. 13.
[프로그래머스/Lv.2] 더 맵게 1) 작은수부터 계속해서 조회해서 값을 추가 비교 하기 때문에 해당 문제에 효율적인 자료구조 PriorityQueue를 사용.2) peek()한 갑이 K보다 클때까지 무한 반복하되 PriorityQueue의 사이즈가 1개라면 더 이상 섞을 수 없으니 -1 반환.3) PriorityQueue에서 2개의 값을 꺼내어 제시한 연산 진행후 add() 및 섞은 횟수 +1.  import java.util.*;class Solution { public int solution(int[] scoville, int K) { int answer = 0; PriorityQueue priorityQueue = new PriorityQueue(); for(int i = .. 2025. 2. 4.
[프로그래머스/Lv.1] 두 개 뽑아서 더하기 1) 주어지는 수가 0~100 범위이기 때문에 두수의 합의 범위는 0~200 이므로 메모리 사용이 크지 않아 접근이 빠른 배열을 사용.2) cases에 두수의 합과 동일한 인덱스에 1을 대입한다.3) cases 배열을 순회해서 해당 인덱스의 값이 1이라면 두수의 합이 해당 인덱스인 경우가 존재하는 것이므로 answer에 추가한다. (0번 인덱스 부터 추가하기 때문에 따로 정렬을 하지 않아도 된다.) class Solution { public int[] solution(int[] numbers) { int size = 0; int[] cases = new int[200]; for(int j = 0; j 2025. 2. 4.
[프로그래머스/Lv.2] 카펫 1) 정사각형 혹은 가로가 긴 직사각형 이기 때문에 두 변의 합은 brwon / 2 + 2 이다.2) yellow가 1 이상 이기 때문에 가로 및 세로의 길이는 3 이상이여야 한다.3) 가능한 가로 세로 경우의 수를 구해서 yellow의 격자의 수 와 비교하여 동일하면 return 한다. class Solution { public int[] solution(int brown, int yellow) { int[] answer = new int[2]; int widthAndHeight = brown / 2 + 2; for(int height = widthAndHeight - 3; height > 0; --height) { .. 2025. 2. 4.