전체 글70 [JAVA] Floyd-Warshall 플로이드-워셜 / 백준 11404 플로이드-워셜(Floyd-Warshall) 알고리즘이란? 가중 그래프에서 최단 거리를 구할 때 사용하는 알고리즘이다 아래 그래프를 보자 2에서 3으로 갈때 가능한 거리는 2 -> 3, 거리 = 3 2 -> 1 -> 3, 거리 = 4 - 2 = 2 최단 거리는 2 -> 1 -> 3 으로 가는 2다 만약 다른 노드 끼리의 거리를 구하려면? 위 그래프는 눈대중으로 바로 알 수 있지만 복잡해질 경우 찾는데 오래걸린다 플로이드-워셜을 이용해 접근해보자 위 이미지에서 k 값은 중간 노드다 k가 0 부터 4까지 값이 있는데 이는 중간 노드가 없을 때, 노드1일 때 노드2일 때 노드3일 때 노드4일 때를 나눠서 두 노드 사이에 중간 노드가 존재할 경우 중간 노드를 거칠 경우와 안걸칠 경우 중 최단 거리를 업데이트 해가.. 2022. 12. 28. [JAVA] TreeMap 트리맵 / 백준 7662 https://docs.oracle.com/javase/7/docs/api/java/util/package-summary.html TreeMap을 알아보기에 앞서 상속 구조를 살펴보자 Map(인터페이스) -> SortedMap(인터페이스) -> NavigableMap(인터페이스) -> TreeMap(구현) 이제 하나씩 살펴보자 1. Map 맵은 으로 이루어진 자료구조다 키는 중복된 값을 가질 수 없으며 각 키는 하나의 값을 가진다 2. SortedMap SortedMap은 Map을 extends한 인터페이스다 Map과의 차이점은 이름 그대로 키 값들을 정렬한다 인터페이스이기 때문에 다음과 같이 이용할 수 없다 SortedMap sortedMap = SortedMap(); // 오류 SortedMap을 이.. 2022. 12. 27. [SPRING/ERROR] AOP 적용 시 순환 참조 에러 요약 SpringConfig 안에 등록된 본인의 빈을 AOP 대상으로 설정하면 순환참조가 발생한다 순환 참조 발생 과정 1. AOP를 이용해 모든 메서드의 호출 시간을 측정해보았다 @Aspect public class TimeTraceAop { @Around("execution(* com.comibird.springintroduction..*(..))") public Object execute(ProceedingJoinPoint joinPoint) throws Throwable { long start = System.currentTimeMillis(); System.out.println("START: " + joinPoint.toString()); try { return joinPoint.proceed(.. 2022. 12. 24. [JAVA/이론] 예외 처리 / throw, throws 전에 예외의 종류에 대해 공부한 적이 있다 [JAVA/이론] Checked Exception vs Unchecked Exeption 예외처리는 compile 에러가 발생할 때만 처리해줬는데 오류가 없는 완벽한 코드를 위해 확실히 알고 가는게 좋겠다 싶어서 공부해보았다. 두 가지 예외 분류 예외는 두 가지로 나뉜다. checked excepti comibird.tistory.com 요약해보자면 예외는 checked exception = exception, 컴파일시 발생하는 에러 unchecked exception = runtime exception, 런타임시 발생하는 에러 두 종류로 나뉜다 다만 이 예외 처리를 언제 어디서 처리하는 지에 대해 확실하게 알고자 정리해봤다 우선 아래는 아래에서 설명할 코드다 .. 2022. 12. 13. [JAVA/백준/2133] 타일 채우기 / DP 2133번: 타일 채우기 3×N 크기의 벽을 2×1, 1×2 크기의 타일로 채우는 경우의 수를 구해보자. www.acmicpc.net 풀이 과정 1. 모양의 종류 2칸일 경우 아래처럼 세 가지 종류로 만들 수 있다 4칸일 경우 2칸짜리 조합 * 2개로 만들 수 있다 하지만 추가적으로 4칸 이상 부터는 중간이 겹쳐진 특별한 모양이 두 개 존재한다 이는 6칸에서도 마찬가지로 존재하며 두 개씩 존재한다 2. 규칙 찾아 점화식 세우기 규칙을 찾아야 하는 DP 문제처럼 보이면 나는 바로 그림을 그려본다 아래 그림처럼 n=8 까지 그려서 규칙을 찾았다 f(n) = 2 + f(n-2)*3 + f(n-4)*2 + f(n-6)*2 + ... + f(2)*2 (n>=4) 추가적으로 n이 홀수일 경우에는 만들 수 없었다 결.. 2022. 12. 11. [JAVA] Comparator를 통한 array 정렬 위 문제를 풀던 중에 이중 배열을 정렬할 필요가 있었다 time = new int[N][2]; for (int i = 0; i < N; i++) { StringTokenizer st = new StringTokenizer(br.readLine()); time[i][0] = Integer.parseInt(st.nextToken()); time[i][1] = Integer.parseInt(st.nextToken()); } time[i][0]을 시작시간, time[i][1]을 종료시간이라고 할 때 종료시간을 기준으로 오름차순으로 정렬하고 만약 시작시간이 동일할 경우 시작시간을 오름차순으로 정렬해야했다 Arrays.sort를 이용해 해결 정렬을 하는 방법은 여러 방법이 있지만 java.util.arrays 클래.. 2022. 12. 10. 이전 1 ··· 3 4 5 6 7 8 9 ··· 12 다음