전체 글 31

Union-Find > 1043번

Union-Find: 대표적인 그래프 알고리즘 '합집합 찾기' 라는 의미를 가진 알고리즘으로 서로소 집합 알고리즘이라고도 부른다 여러 개의 노드가 존재할 때 두 개의 노드를 선택해서, 현재 이 두 노드가 서로 같은 그래프에 속하는지 판별하는 알고리즘 1043번 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.StringTokenizer; public class baekjoon1043 { static int n; static int m; static int[] parent; static boolean[] tru..

다이나믹 프로그래밍 > 12865번, 9084번, 2293번

12865번 배낭에 넣을 수 있는 물건들의 가치합의 최댓값을 담은 이차원 배열 // knapsack 알고리즘 > 무게와 가치가 함께 주어짐 // 이차원 배열 사용 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class baekjoon12865 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer s..

플로이드 워셜 > 13168번

13168번 map을 사용하여 한국에 있는 도시들에 번호를 매겨준다 m개의 도시를 차례대로 여행하므로 해당 도시들을 배열에 담은 뒤 도시들의 간 최소 비용 경로의 합을 구한다 ex) 서울 > 전주 > 순천 > 여수 > 서울을 여행할 경우 [서울 > 전주의 최소 비용 경로] + [전주 > 순천의 최소 비용 경로] + [순천 > 여수의 최소 비용 경로] + [여수 > 서울의 최소 비용 경로]이 여행에서 최소 비용 경로의 합이 된다 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.HashMap; import java.util.Map; import java.util..

최소 신장 트리 > 14621번, 14950번, 21924번

14621번 // 모든 대학교 간 이동이 가능해야 함 // 최단 경로 // 크루스칼 알고리즘 사용 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; public class baekjoon14621 { static int n; // 학교 수 (1번 대학교, 2번 대학교...) static int m; // 연결하는 도로 수 static Map map = new HashMap(); static ArrayList [] lists; // 인접리스트 static boolean [] visited; // 방문 여부 체크 static int result; static..

분할 정복 > 1629번, 10830번

1629번 long 타입을 사용해도 정수의 오버플로우가 발생하므로 모듈러 합동 공식을 사용해야 한다 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class baekjoon1629 { static int A; static int B; static int C; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringToken..

보석 쇼핑

코딩테스트 연습 - 보석 쇼핑 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 투 포인터를 사용하는 문제이다 import java.util.*; public class programmers_jewel { public static void main(String[] args) { String [] gems = {"DIA", "RUBY", "RUBY", "DIA", "DIA", "EMERALD", "SAPPHIRE", "DIA"}; System.out.println(solution(gems)); gems ..

투 포인터 > 17609번

17609번 2개의 포인터가 각각 배열의 시작점과 끝점에 위치하여 반대로 이동하는 방법을 사용 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class baekjoon17609 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine()); StringBuilder sb = new StringBuilder(); for(int ..