전체 글(121)
-
프로세스(Process) & 스레드(Thread)
프로그램(Program) 정의된 업무를 수행하기 위한 명령어들의 순서 정적인 상태 - 아직 실행 중이 아님 운영 체제로부터 독립적 메모리를 할당 받지 못함 프로그램 카운터(Program Counter) 다음에 실행할 명령어를 결정 프로세스(Process) 실행 중인 하나의 프로그램의 인스턴스 운영 체제로부터 할당 받은 작업의 단위 특징 프로세스는 각각 독립된 주소 공간을 가짐 프로세스는 적어도 한 개 이상의 control의 흐름(스레드)을 가짐 운영체제로부터 시스템 자원을 할당 받음 - 메모리, CPU시간, IO장치 다른 프로세스의 자원에 접근하려면 프로세스간 통신(IPC)을 통해서만 가능 운영 체제의 최소 작업 단위 스레드(Thread) 프로세스 내에서 실행의 흐름을 표현 프로세스가 할당 받은 자원을 ..
2021.11.22 -
BOJ_11725_트리의 부모 찾기
1 구분: 그래프 이론, 그래프 탐색, 트리, 너비우선탐색, 깊이 우선탐색 언어: Java 전략 루트 노드인 1부터 시작 노드들 간 연결 요소를 ArrayList배열을 이용 - 각 배열마다 ArrayList선언 필요 자신과 연결된 노드들 이 내 자식이다 부모의 번호를 담을 배열을 준비한다 나와 연결되어 있는데, 이미 부모가 설정된것(나의 부모이다). 그렇지 않은 것들의 부모를 저장 bfs: 한 노드에서 자신과 연결된 모든 노드를 바로 자식으로 여기기 때문에 2. 코드 import java.util.Scanner; import java.util.ArrayList; import java.util.LinkedList; import java.util.Queue; public class Main { static ..
2021.11.19 -
Next Permutation
Next Permutation: 한 순열에서 사전 순으로 다음 순열 생성 알고리즘 배열을 오름 차순으로 정렬한다 뒤쪽 부터 탐색하여 가장 큰 놈을 찾는다(꼭대기를 찾는다, i번째) -> 꼭대기 바로 앞이(i-1번쨰)이 교환 위치(a) 뒤쪽 부터 탐색하여 a와 교환할 a보다 큰 가장 빠른 곳(b)를 찾는다 a와 b를 교환한다 꼭대기 부터 맨 뒤까지 정렬한다 2~5번 과정을 반복 코드 //다음 큰 순열이 있으면 true, 없으면 false private static boolean np(int[] numbers) { //i, j, k 모두 맨 뒤에서 부터 시작 //비교하는 부분 모두 i-1부터, int N = numbers.length; //step1. 꼭대기를(i) 찾는다. 꼭대기를 통해 교환위치(i-1)찾..
2021.11.16 -
BOJ_16938_캠프 준비
1 구분: 수학, 부르트포스 알고리즘, 조합론, 백트레킹 언어: Java 전략: 문제를 선택한다 - 개수는 2개 이상 -> 부분 집합을 이용해 문제를 선택하거나 선택하지 않는다 문제들의 난이도들의 합을 구한다 -> 선택된 것들을 더한다 문제들의 최상 난이도 - 최하 난이도 차를 구한다 -> 배열의 정렬을 이용하여 최대, 최소값을 구한다 조건에 맞다면 개수를 1 증가 2. 코드 import java.util.Arrays; import java.util.Scanner; public class Main { static int n, l, r, x, ans; static int[] level; static boolean[] subset; public static void main(String[] args) { S..
2021.11.12 -
BOJ_11279_최대 힙
1 구분: 자료구조, 우선순위 큐 언어: Java 전략: 우선순위 큐를 활용한다. 우선순위 큐는 작은 수부터 나오니 큰 수부터 나올 수 있도록 작업을 한다. 0의 개수만큼 숫자가 나와야 하므로, (빈 상태에서도) 일단 0을 넣고, 출력한다. 2. 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.PriorityQueue; import java.util.Scanner; public class Main { public static void main(String[] args) throws NumberFormatException, IOException { Buf..
2021.11.11 -
BOJ_16987_계란으로 계란치기
1 구분: 브루트포스, 백트레킹 언어: Java 전략 1. DFS를 이용하여 칠 순서대로 계란을 찾는다 2. 손에 든 계란이 깨져있다면 pass 3. 깨려는 계란이 손에 든 계란이라면 pass 4. 계란을 치고, 깨진 계란이 있다면 깨진 것들 개수를 더한다. 재귀를 부른다 5. 다시 원상 복구를 한다(DFS의 특징) 6. 맨 오른쪽 계란을 잡고 깬다면 이제 그만 7. 매번 최대값을 갱신 2. 코드 package algorithm.boj; import java.util.Scanner; public class BOJ_16987 { static class Egg{ int power; int weight; boolean state;//true는 아직 안깨진것, false는 꺠진것 Egg(int power, in..
2021.11.08