본문 바로가기

전체 글

(150)
백준 1761번 정점들의 거리 (JAVA) (1) distance = 루트 노드에서 i번째 노드까지의 거리(2) a와 b의 최단 거리: distance[a] + distance[b] - 2*distance[lca(a,b)]package 백준;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.ArrayList;import java.util.Arrays;import java.util.StringTokenizer;public class B1761_정점들의거리 { static int N, h, root; static ArrayList[] tree; static int[][] parent; static int[] d..
[Java] TreeSet 정리 개념중복을 허용하지 않고 요소를 정렬된 순서로 저장하는 자료구조내부적으로 Red-Black Tree(자가 균형 이진 탐색 트리)를 사용해 구현되었음. 주요 특징1. 자동 정렬: 요소 추가 시마다 자동으로 정렬 상태 유지2. 고유성 보장: 동일한 요소는 중복 저장되지 않음3. 빠른 연산: 검색/삽입/삭제 시 O(logN) 시간 복잡도4. 범위 기반 연산: 부분 집합 추출 기능 제공 객체의 Comparable 구현에 의존-> 사용자 정의 객체 사용 시 Comparator를 반드시 구현해야 함.예시TreeSet set = new TreeSet();// 요소 추가set.add("Apple");set.add("Banana");// 첫 번째/마지막 요소 접근String first = set.first(); // ..
Union Find(서로소 집합) 개념 및 기본 자바 코드 개념- 서로소나 상호배타 집합으로, 교집합이 없는 집합.- 집합의 대표자(식별자) 존재하여 각 집합을 대표함.- 서로소 집합은 연결 리스트, 트리로 표현 가능함. 대표 연산 3가지(1) make-set(x)x를 유일하게 포함하는 새로운 집합을 생성한다. (2) find-set(x) x를 포함하는 집합을 찾는다. (3) union(x, y)x,y를 포함하는 두 집합을 찾는다. 기본 코드 (Java)int N; // N개의 원소 존재int[] parents; // 원소들마다의 부모// initvoid make(){ for(int i=0;i
블로그 준비하기 (1) 콘텐츠 및 구글 애드센스 알아보기 1. 블로그 개설 및 설정- 블로그스팟 또는 자체 도메인(WordPress 등) 을 선택- SEO 최적화를 고려한 블로그 이름 및 도메인 설정 2. 수익화 가능한 콘텐츠 제작- 키워드 리서치를 통해 검색량이 많고 수익성이 높은 주제 선택- 일정한 포스팅 주기 유지 3. 애드센스 승인 준비- 최소 15-20개의 양질의 글 작성- 광고 배치에 적합한 레이아웃 설계- 저작권 문제없는 이미지 및 콘텐츠 사용 4. 애드센스 신청 및 광고 최적화- Google Adsense 신청 후 승인 대기 (최소 몇 주 소요 가능)- 승인 후 광고 배치 최적화 (CTR & RPM 상승 전략 적용)  5. 트래픽 증가 전략- SEO 최적화 (메타 태그, 내부 링크, 키워드 최적화)- SNS, 커뮤니티 활동으로 유입 증가- 뉴스레..
백준 1753 최단경로(JAVA) | 다익스트라 알고리즘 코드 이해 알고리즘 과정1. 초기화- 각 노드의 최소 거리 배열(dist[]) 설정- 처음에는 출발 노드의 거리만 0으로 설정하고, 나머지 노드의 거리는 무한대로 설정- 우선순위 큐를 사용 2. 우선순위 큐에서 최소 거리를 가진 노드를 선택- 우선순위 큐에서 최소 거리 값을 가진 노드를 꺼내어, 해당 노드를 기준으로 연결된 노드들의 거리를 갱신 3. 거리 Update- 현재 노드를 기준으로 연결된 노드에 대해, 새로운 경로가 더 짧다면 거리를 갱신.- 이를 반복적으로수행하며, 최단 경로를 찾아냄. 4. 반복- 모든 노드를 반복할 때까지 위의 과정을 반복 시간 복잡도: O(E logV)- E: 간선의 개수, V: 노드의 개수- 우선순위 큐에서 poll(), offer()은 각각 O(logV),, 각 간선마다 최대 한..
최단 경로 알고리즘 - 다익스트라 개념과 사용 가능한 문제 유형 정리 다익스트라란?다익스트라 알고리즘은 최단 경로를 찾는 알고리즘으로, 보통 가중치 그래프에서 출발점에서 다른 노드들까지의 최소 거리를 구하는 문제이다. 다익스트라 알고리즘을 사용할 수 있는 문제 유형1. 단일 출발점에서 모든 도착점까지의 최단 경로를 구하는 문제- (예) 가장 빠른 경로를 찾거나 최소 비용 목적지에 도달하는 경로를 찾는 문제- (예) 주어진 도시에서 다른 모든 도시에 최소 비용으로 가는 경로를 구하라. 2. 가중치가 있는 그래프에서 최단 경로를 찾는 문제- 그래프의 각 간선에 가중치가 있을 떄, 그 가중치에 따른 최단 경로를 계산- 가중치는 거리, 시간, 비용 등일 수 있음.- (예) 다양한 도로가 주어지고, 각 도로마다 비용이 다를 때, 주어진 출발점에서 목적지까지 가는 최소 비용 경로를 ..
HashMap과 HashSet HashMap는 키-값 형태로 데이터를 저장하는 자료구조- K: key ->찾을 떄 사용하는 값- V: value -> 키에 연결된 데이터 HashSet는 중복을 허용하지 않는 리스트- 똑같은 값을 여러번 넣어도 한 번만 저장됨- 검색이 빠름 O(1) HashMap> hash 의 의미- 키로 HashSet를 저장하는 해시맵
자바 문자열 유용한 함수 정리 아래와 같은 두 문자열이 있다고 하자. String a = "a"; String b = "b"; 이에 대해 사용할 수 있는 문자열 함수를 정리해보았다. - 문자열 비교 //1. 같은지 비교 a.equals(b); // true or false 반환 //2. 문자열 비교 a.compareTo(b) - 문자열 길이 a.length() - 부분문자열 substring의 경우 (1) index를 하나만 주면, 주어진 index부터 문자열 길이 끝까지 출력하고 (2) index 파라미터가 두개인 경우, 시작부터 끝까지만 문자열 출 String aa = "hello"; System.out.println(aa.substring(3));// lo