java
-
BOJ) 작업 (2056 번)알고리즘/백준 2021. 3. 3. 00:45
작업 2056번: 작업 수행해야 할 작업 N개 (3 ≤ N ≤ 10000)가 있다. 각각의 작업마다 걸리는 시간(1 ≤ 시간 ≤ 100)이 정수로 주어진다. 몇몇 작업들 사이에는 선행 관계라는 게 있어서, 어떤 작업을 수행하기 위해 www.acmicpc.net 작업의 개수 N이 주어지고, 다음 N줄에 거쳐 각 작업의 수행 시간과 선행돼야하는 작업의 숫자가 주어진다. K작업에서 선행되는 작업은 1 ~ K-1 사이의 작업이 주어진다. 이 문제는 DP와 위상정렬로 분류되어있다. 그래서, 위상정렬로 접근하려고 했다. ArrayList에 각 선행되는 작업들을 넣어주고, 선행작업이 없는 작업들을 Queue에 넣어주어 순회했었다. 각 작업은 상관관계가 없으면 동시에 진행되니까, group을 넣어주고, depth를 함..
-
자바 참조 유형 (Strong, Soft, Weak, Phantom Reference)Java & Spring/자바 2021. 2. 28. 22:54
자바 참조 유형 강한 참조(Strong Reference) 일반적으로 new를 통해서 객체를 생성하게 되면 생기게 되는 참조. 강한 참조를 통해 참조되고 있는 객체는 가비지 컬렉션의 대상에서 제외된다. 소프트 참조(Soft Reference) java.lang.ref.SoftReference 객체를 참조하는 경우가 SoftReference 객체만 존재하면, GC의 대상이 됨 일반적으로는 메모리 여유에 따라 GC의 대상 여부가 결정 메모리 여유가 충분하면 GC가 수행되더라도 수거되지 않는다. JVM의 메모리가 부족하다면(Out Of Memory에 가깝다면) 힙 영역에서 제거된다. 약한 참조(Weak Reference) java.lang.ref.WeakReference GC가 발생하면 무조건 수거됨 GC의 ..
-
Checked Exception vs Unchecked ExceptionJava & Spring/자바 2021. 2. 28. 22:24
Exception과 Error An exception is represented by an instance of the class Throwable (a direct subclass of Object) or one of its subclasses. Throwable and all its subclasses are, collectively, the exception classes. (subclass of Throwable must not be generic) The classes Exception and Error are direct subclasses of Throwable. Exception is the superclass of all the exceptions from which ordinary pr..
-
BOJ) 전깃줄 (2565 번)알고리즘/백준 2021. 1. 26. 19:18
전깃줄 2565번: 전깃줄 첫째 줄에는 두 전봇대 사이의 전깃줄의 개수가 주어진다. 전깃줄의 개수는 100 이하의 자연수이다. 둘째 줄부터 한 줄에 하나씩 전깃줄이 A전봇대와 연결되는 위치의 번호와 B전봇대와 연결되는 www.acmicpc.net A와 B 두 전봇대가 주어지고, 두 전봇대를 잇는 전기줄의 정보가 주어진다. 이 때, 전깃줄이 교차하는 경우를 없애기 위해 전깃줄을 제거해야 하는데, 가장 최소한의 전깃줄을 제거해서 교차하는 경우가 되게 만드는 문제다. 교차하는 가장 최소한의 전깃줄을 제거한다는 것은 전체 전깃줄에서 가장 올바르게 연결된 전깃줄 수를 빼주는 것과 성립한다. 전체 전깃줄 (n) - 가장 많이 올바르게 연결된 전깃줄 = 불필요하게 교차된 전깃줄의 최소값 여기서 가장 많이 올바르게 연..
-
BOJ) 달려라 홍준 (1306 번)알고리즘/백준 2021. 1. 26. 19:11
달려라 홍준 1306번: 달려라 홍준 첫째 줄에는 뛰는 코스의 길이, 즉 칸수 N과 홍준이의 시야의 범위 M이 주어진다. 시야가 M이라고 하면 현재 위치에서 앞뒤로 M-1칸까지 광고판이 보이는 것이다. (1 ≤ M ≤ N ≤ 1,000,000) 두 번째 www.acmicpc.net 슬라이딩 윈도를 공부하기 위해 푼 문제였다. 슬라이딩 윈도는 주로 두 개의 네트워크 호스트간의 패킷의 흐름을 제어하기 위한 방법으로 사용된다. 고정된 크기의 윈도우가 전체 범위에서 움직이는 방식이다. 배열로 된 예시를 통해 이해하는게 더 수월했다. 위와 같은 배열에서 3의 크기로 전체를 탐색하는 경우 사용한다고 생각하면 편하다. 여러 블로그를 찾아봤는데, 슬라이딩 윈도의 핵심은 이전 값에 대해 중복되는 부분을 재사용한다는 것이..
-
BOJ) 암호코드 (2011 번)알고리즘/백준 2021. 1. 26. 18:54
암호코드 2011번: 암호코드 나올 수 있는 해석의 가짓수를 구하시오. 정답이 매우 클 수 있으므로, 1000000으로 나눈 나머지를 출력한다. 암호가 잘못되어 암호를 해석할 수 없는 경우에는 0을 출력한다. www.acmicpc.net 문제의 조건이 많이 주어지지 않아서, 예외 케이스를 많이 찾아야했다. 우선, 문제를 살펴보면 문자를 숫자로 암호화하는데, A=1, Z=26으로 암호화를 한다. 이 암호화된 숫자로부터 나올 수 있는 암호의 경우의 수를 구하는 문제다. 암호를 만들 수 없는 경우는 0을 출력한다는 조건도 있다. 먼저, 입력받을 때 부터 예외 케이스를 검증해주었다. 0으로 시작하는 경우, 연속으로 0이 들어오는 경우, 입력한 문자열이 빈 문자열인 경우, 숫자가 아닌 문자열이 들어오는 경우를 먼..
-
BOJ) 생물학자 (3116 번)알고리즘/백준 2021. 1. 21. 19:12
생물학자 3116번: 생물학자 첫째 줄에 박테리아의 수 N(1 ≤ N ≤ 5,000)이 주어진다.다음 N개의 줄에는 세 개의 정수 X, Y, D (-1,000,000 ≤ X,Y ≤ 1,000,000), (1 ≤ D ≤ 8) 가 주어진다. X와 Y는 박테리아의 시작 좌표이며, D는 방향이 www.acmicpc.net 수학 문제라고 느껴졌다. 박테리아의 위치가 주어지고, 방향이 주어진다. 아래의 방향에 따라서, 매 초 일정하게 이동을 할 때, 박테리아 여러 마리가 같은 칸에 제일 많이 있을 때가 언제인지, 그리고 그 때 몇 마리가 같은 칸에 있었는지 구하는 문제였다. 또한, X값은 왼쪽에서 오른쪽으로 갈 수록 증가하며, Y값은 위로 갈수록 증가한다는 조건이 있다. 즉, 1번은 매초 X값이 -1씩, Y값이 +..