본문 바로가기

전체 글

(164)
Interrupt 란? 인터럽트 프로세스, 인터럽트 우선순위 1. 인터럽트 CPU당 하나의 Task(Process/Thread)만 실행할 수 있기 때문에, 사용자에게 멀티 태스킹을 지원하기 위해서는 Task를 Switching하며 구동되어야 합니다. 이때 Task간 Switching하는 과정에서 발생하는 요청을 인터럽트라고 합니다. 또는 CPU가 프로그램을 실행하고 있을 때, 입출력 장치나 예외상황이 발생하여 처리가 필요할때 프로세서에게 알려 처리할 수 있도록 하는 것을 의미합니다. I/O Device와 커뮤니케이션 저장매체에서 데이터 처리를 완료한뒤 프로세스를 깨워야할때 인터럽트가 필요합니다. (block -> ready) 예외 상황 핸들링 0으로 나누려는 연산의 경우 알 수 없기 때문에 인터럽트가 필요합니다. 이때는 Process를 Kill 해줍니다. 타이머 ..
[백준] JAVA - 15686.치킨 배달 생각 주어진 치킨 집 N개에서 M개의 치킨 집을 뽑는 조합을 구한 뒤, 각 조합마다 주어진 최소 치킨 거리를 찾는 문제입니다. 처음에 문제를 읽고 도시에 있는 치킨집 중에서 최대M개를 고르라는 뜻을 1개,2개, ... ,M개까지 골랐을 각각의 모든 경우에 대한 부분집합 문제로 잘못 이해했다가 엄청 고생했습니다ㅠㅠ 재귀를 이용해서 combination을 구했지만 시간초과가 계속 나와 결국 해결하지 못하고 다시 nextPermutation을 이용해서 풀었습니다. brute force + 시뮬레이션 문제는 정말 많이 풀어봐야겠습니다 입력을 받을때, 치킨집과 집을 ArrayList 타입으로 받고 각각의 좌표를 클래스를 만들어 저장합니다. 치킨집의 총 개수는 치킨집 ArrayList의 크기이고, 최대 M개를 뽑는..
[백준] JAVA - 3109.빵집 가스관을 연결할때 오른쪽, 오른쪽 위 대각선, 오른쪽 아래 대각선으로 연결할수있고, 각 칸의 중심끼리 연결합니다. 문제에서 요구하는것이 가장 가스관의 최소 최대 거리가 아니기 때문에 가스관이 갈수있는 경우를 되돌아가서 다시 탐색하지 않는것이 핵심입니다. 그렇기 때문에 백트래킹 방법으로 풀어야합니다. 또한 가스관의 최대 개수를 구해야하므로 가스관이 오른쪽 위 대각선 -> 오른쪽 -> 오른쪽 아래 대각선 순서대로 탐색을 해야 파이프라인의 최대개수를 구할수있습니다. 3방 탐색을 통해 다음 단계를 탐색하러 들어갑니다. 이때 방문 표시에 대한 흔적을 남겨야 탐색 여부를 판단할수있기 때문에 반드시 해줘야합니다. 탐색을 할 수 없는 위치라면 0을 리턴하고 더 이상 이동 할 수없다는 흔적을 남겨줍니다. 마지막까지 탐색..
[백준] JAVA - 2839.설탕배달 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; /** * 봉지최소개수 * dp[n] : n킬로그램 배달하는데 3kg,5kg 봉지 최소 개수 합 * dp[0] = 0 * dp[3] = 1 * dp[5] = 1 * */ public class Baekjoon_2839_설탕배달 { static int answer = 0; static int[] dp; public static void main(String[] args) throws NumberFormatException, IOException { BufferedReader br = new Buff..
[백준] JAVA - 2961.도영이가 만든 맛있는 음식 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Baekjoon_2961_도영이가만든맛있는음식 { /** * 재료를 적어도 하나는 사용 * 차이를 최소로 만드는 요리의 차이값을 출력 * */ static int N; static int[] sour; static int[] bitter; static int answer; public static void main(String[] args) throws NumberFormatException, IOException { // TODO Auto-generated..
[SWEA] JAVA - 6808. 규영이와 인영이의 카드게임 package com.ssafy.off; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class SWEA_6808_규영이와인영이의카드게임 { /** * 규영이 카드 입력받음.(18장에서 규영이 카드 뺀게 인영이카드) * 이때 인영이가 카드의 순열을 어떻게 하느냐에 따라서 규영이가 이기는 경우, 지는 경우 몇가지? * @throws IOException * @throws NumberFormatException * */ static int[] A; //규영 static int[] B; //인영 static boole..
[백준] JAVA - 3040.백설 공주와 일곱 난쟁이 package com.ssafy.off; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Baekjoon_3040_백설공주와일곱난쟁이 { static final int N = 7; static int[] numbers; static int[] result; static boolean isSelected[]; public static void main(String[] args) throws NumberFormatException, IOException { BufferedReader br = new BufferedReader(new InputStreamReader(Sy..
Comparable , Comparator 인터페이스 차이점 Comparable , Comparator 인터페이스는 모두 객체의 정렬과 관련된 인터페이스입니다. Comparable은 클래스 내부에 객체의 정렬 기준을 만들어 놓을 때 사용됩니다. 이 인터페이스를 구현한 객체에게 주는 한 가지 기본 정렬 규칙을 지정해 주는 것입니다. Comparator 인터페이스는 클래스 외부에 객체의 정렬기준을 만들어 놓을때 사용됩니다. Comparable이 구현된 클래스들의 기본 정렬 규칙과는 다르게, 주어진 특정 기준을 가지고 정렬 규칙을 지정하고 싶을때 사용합니다. 사용 예제 1. Comparable Comparable 인터페이스를 implements 하고 compareTo 메소드를 원하는 기준으로 오버라이드 해야합니다. public class Writer implements..