반응형

프로그래밍 135

[백준] 1260. DFS와 BFS

문제 https://www.acmicpc.net/problem/1260 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사 www.acmicpc.net 같은 그래프를 DFS와 BFS로 출력하는 문제. 깊이우선탐색과 너비우선탐색의 기본을 다질 수 있는 문제다. 전략 01. Node 클래스 그래프의 노드 데이터들을 담을 Node 클래스를 생성한 뒤에 DFS와 BFS를 수행하는 방법. Node 클래스에는 정점 번호 데이터, 해당 노드와 연결된 노드, 방문 여부에 대한 정보가 들어가면 된다. 그럼 해당 노드를 ..

[백준] 11866. 요세푸스 문제 0

문제 https://www.acmicpc.net/problem/11866 11866번: 요세푸스 문제 0 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000) www.acmicpc.net 1부터 N까지의 사람이 원을 그리고 앉아 있을 때 K번째 사람을 순서대로 뽑는 문제 전략 01. LinkedList 처음 생각한 풀이는 사람이 순서대로 앉아 있기 때문에 Singly Linked List로 풀 수 있지 않을까였다. 인덱스를 K만큼 증가시켜가며 뽑은 뒤 범위는 넘는다면 N로 나눈 나머지를 다시 인덱스로 함으로서 범위 내에서 계속 돌도록 유지할 수 있다. 결과적으로는 원을 그리고 있기 때문에 Circular Linked List나 다른 방법이 더 쉬운 방법이었지만..

[백준] 1012. 유기농 배추

문제 https://www.acmicpc.net/problem/1012 1012번: 유기농 배추 차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 www.acmicpc.net 전형적인 DFS(Depth-First Search) 문제다. 상하좌우로 인접한 1인 셀들은 배추흰지렁이가 모두 왕래할 수 있으므로 1개로 쳐야한다. 전략 01. DFS 땅을 순회하면서 값이 1이고, 아직 방문하지 않은 땅을 발견한다면 그 지점부터 상하좌우를 확인해 주변의 땅 중 1이면서 아직 방문하지 않은 땅들을 재귀적으로 모두 방문처리한다. 이때 카운트를 1 올려주면 한 덩어리인 땅을 하나로 칠 수 있..

[Java] JDK 부수기 - (2) java.lang.System - 5. currentTimeMillis, nanoTime

5. currentTimeMillis, nanoTime 각각 OS로부터 밀리초, 나노초 단위로 시간을 받아온다. JVM 뜯어보기 System.currentTimeMillis(), System.nanoTime()은 System클래스에서 시간을 다루는 두 메서드지만 전자는 주로 현재 시간을 나타내거나 시간 차이를 비교할 때 사용하지만, 후자는 시간 차이를 정밀하게 비교할 때 사용한다. 두 메서드의 작동 방식에 차이가 있기 때문인데 JVM을 뜯어보면서 함께 비교해보자. System 클래스에서 두 메서드는 다음과 같이 코딩되어 있다. // src/java.base/java/lang/System.java public final class System { @IntrinsicCandidate public static..

[Java] JDK 부수기 - (2) java.lang.System - 4. getProperties

4. getProperties JVM의 시스템 속성을 리턴한다. JVM 뜯어보기 System.getProperties() 메서드는 JVM과 자바 애플리케이션 환경에 대한 설정을 담고 있는 Properties 객체를 리턴한다. 이 Properties 객체는 JVM이 시작될 때 설정되며 'java -DpropertyKey=value' 형식의 명령줄 인수를 이용해 시스템 속성을 설정해 줄 수도 있다. 이 글을 진행하면서 알게 되겠지만 System.setProperty("propertyKey", "value") 메서드를 사용해 시스템 속성을 새롭게 설정할 수도 있다. 시스템 속성에는 대표적으로 자바의 버전이나 CPU 정보, OS정보, OS의 File 구분자(Windows의 \, Linux의 /), OS의 행 구..

[Java] JDK 부수기 - (2) java.lang.System - 3. console

3. console 현재 실행 중인 JVM에 연관된 문자형 콘솔이 존재하는 경우 이를 리턴한다 JVM 뜯어보기 System.console() 메서드는 JVM이 콘솔 환경에서 실행될 때 해당 콘솔 객체를 리턴하고 없다면 null을 리턴한다. // src/java.base/java/lang/System.java public final class System { private static volatile Console cons; public static Console console() { Console c; if ((c = cons) == null) { synchronized (System.class) { if ((c = cons) == null) { cons = c = SharedSecrets.getJava..

반응형