우선순위 큐(Priority Queue) 우선순위 큐는(Priority Queue)는 데이터를 우선순위에 따라 저장하고 관리하는 자료구조이다. 보통 힙(Heap) 자료구조를 이용하여 구현한다. 우선순위 큐는 힙(Heap) 자료구조를 이용하여 구현할 수 있으며, 힙은 최대힙(Max Heap)과 최소힙(Min Heap)으로 구분된다. 최대힙은 부모 노드가 자식 노드보다 항상 큰 값을 가지고, 최소힙은 부모 노드가 자식보다 항삭 작은 값을 가진다. 이러한 특성 덕분에 우선순위 큐는 최대값(최소값)을 빠르게 찾을 수 있다. 힙은 부모노드와 자식노드 간의 우선순위를 비교하여 부모노드가 항상 자식노드보다 우선 순위가 높은 완전이진트리 형태의 자료구조이다. 이를 이용하여 우선순위 큐를 구현할 경우, 최상위 우선순위를..
BigInteger BigInteger 클래스는 매우 큰 정수 값을 처리하기 위한 클래스이다. 이 클래스는 내부적으로 2진수로 표현이 되며, 자바에서 기본적으로 제공하는 int나 long 타입의 크기를 초과하는 정수 값을 처리 할 수 있다. BigInteger 클래스의 생성자 BigInteger 클래스는 다양한 방법으로 객체를 생성할 수 있다. 그 중에서도 가장 일반적인 방법은 아래와 같다. BigInteger bi1 = new BigInteger("12345678901234567890"); BigInteger bi2 = BigInteger.valueOf(1234567890); 위 코드에서 bi1 객체는 문자열 "12345678901234567890"을 BigInteger 객체로 변환하여 생성하고, bi..
문제 문제 풀이 유저가 신고를 한 아이디를 가지고 몇 번 신고를 했는지 체크하는 문제이다. 한 유저가 한 아이디를 여러번 신고하는 문제를 set 자료구조를 사용하여 처리 하였으며, 그렇게 모인 신고리스트를 map 자료구조로 카운팅하였음. 카운팅 된 수가 k가 될 때 ban이 되게 하였고 그 ban이 된 리스트를 가지고 유저가 신고한 사람이 밴을 당하였는지 다시 카운팅하여 결과 배열에 담았다. 나의 답안 public static int[] solution(String[] id_list, String[] report, int k) { int[] answer = new int[id_list.length]; Map reportMap = new HashMap(); ArrayList banList = new Arr..
문제 문제 풀이 매달이 28일로 고정이 되어 있는 문제로 년, 월, 일을 일 수로 변환하고 그 변환한 값과 약정기간을 비교하여 약정기간을 넘었을 때 결과로 반환하면 되는 방식으로 처리 하였음. 나의 답안 public static int[] solution(String today, String[] terms, String[] privacies) { ArrayList list = new ArrayList(); Map termsMap = new HashMap(); String[] todayArr = today.split("[.]"); int year = Integer.parseInt(todayArr[0]); int month = Integer.parseInt(todayArr[1]); int day = Inte..
문제 문제 풀이 keymap 배열에서 입력된 값중 하나가 존재 할 때 가장 가까운 인덱스 값들을 더해서 결과 배열에 담아줘야하는 문제이다. for문을 여러번 사용해야 하는 문제로 중간에 논리적 정리가 복잡해지면 이상한 값들을 볼 수 있는 문제이다. 나의 답안 public static int[] solution(String[] keymap, String[] targets) { int[] answer = new int[targets.length]; for (int i = 0; i < targets.length; i++) { int sum = 0; for (int j = 0; j < targets[i].length(); j++) { char tc = targets[i].charAt(j); int min = I..
그래프 그래프는 정점(Vertex)과 간선(Edge)으로 이루어진 자료구조를 의미한다. 연결된 정점간의 관계를 표현할 수 있는 자료구조로 지하철 노선도나 통신 네트워크, 길 추천 등에 사용된다. 그래프의 구조 정점(Vertex) : 각 노드를 의미한다. 간선(Edge) : 노드와 노드를 연결하는 선(Link, Branch) 인접 정점(Adjacent Vertex) : 간선 하나를 두고 바로 연결 된 정점을 의미함. 정점의 차수 (Degree) 무방향 그래프에서 하나의 정점에 인접한 정점의 수 무방향 그래프 모든 정점 차수의 합 = 그래프 간선의 수 * 2 진입 차수(In-Degree) : 방향 그래프에서 외부에서 오는 간선의 수 진출 차수(Out-Degree) : 방향 그래프에서 외부로 나가는 간선의 수..