전체 글 202

백준 1463 자바 - 1로 만들기

문제 문제해결 - dp 배열을 만들고 x+1까지 돌면서 i를 1로 만들기 위한 최소 연산 횟수를 담아둔다 - f(x) = min(f(x-1), f(x/2), f(x/3)) + 1 - 1은 연산횟수가 0이므로 2부터 시작한다 - -1연산, /2연산, /3연산 순서대로 더 작은 값이 되므로 /2연산이랑 /3연산은 나누어 떨어질때만 포함시키며 가장 횟수가 적은 값을 dp[i]에 담는다 - dp[x]가 x를 1로 만들기 위한 최소 연산 횟수가 된다 import java.util.Scanner; public class B1463 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int x = sc.nextInt(); //..

다이나믹 프로그래밍 - 금광

문제 문제해결 1. 금의 위치를 arr 배열에 담는다 2. 각 위치의 최고값을 기록할 dp 배열을 만든다, 맨 좌측은 더할 값이 없으므로 arr과 똑같이 초기화 한다 3. 점화식: dp[i][j] = arr[i][j] + max(dp[i-1][j-1], dp[i][j-1], dp[i+1][j-1]) - 이때 행이 아닌 열 순서대로 계산해야 하기 때문에 상위 반복문을 m만큼, 하위 반복문을 n만큼 돈다 - 맨 위 행일때랑 맨 아래 행일때는 i-1, i+1이 성립 안되기 때문에 if문으로 검사해준다 4. 맨 우측에 있는 열 중 가장 큰 값이 정답 import java.util.Scanner; public class Ex05_금광 { public static void main(String[] args) { S..

네트워크 보안

※kocw에서 제공하는 이석복 교수님의 컴퓨터네트워크 수업을 듣고 필기한 내용입니다. 출처를 따로 밝히지 않는 한 전부 해당 수업에서 제공한 자료들이며 제가 작성한 부분에 있어 틀린 부분이 있을 수도 있다는 점 양해바랍니다. Network security - 네트워크 보안의 4가지 요소 1. confidentiality: 기밀성, 센더와 리시버의 통신 내용을 제 3자가 알아서는 안된다 2. authentication: 인증, 상대방이라는걸 확신할 수 있어야 한다 3. message integrity: 중간에 메시지 변경이 일어나면 안된다 4. access and availability: 데이터 통신은 24시간 내내 누구에게나 이루어 질 수 있어야 한다 - 하지만 이런 요소들은 OSI 계층 어디에도 포함되..

다이나믹 프로그래밍 - 효율적인화폐구성

문제 해설 문제해결 1. 각 화폐 단위를 배열로 받는다 (int[] money) 2. 0~m원까지 가지고 있는 화폐로 만들 수 있는 최소 개수를 구하기 위한 dp 배열을 만든다 3. dp 배열의 0원은 0원으로 만들수있으므로(?) 0으로, 나머지는 10001(나올수 없는 최대값)로 초기화 한다 4. 2중 반복문을 돌며 각 화폐마다(mon) i-mon을 만들 수 있으면(dp[i-mon]!=10001) dp[i]와 dp[i-mon]+1의 최소값을 dp[i]에 넣는다 5. 마지막 dp[m]이 10001일 경우 구할 수 없는 경우므로 -1을 그 외는 dp[m]을 출력하면 된다 import java.util.Scanner; public class Ex04_효율적인화폐구성 { public static void ma..

다이나믹 프로그래밍 - 1로 만들기

문제 문제해결 - f(x)는 x를 1로 만들기 위한 최소 연산 횟수 - f(x) = min(f(x-1), f(x/2), f(x/3), f(x/5)) + 1 - 1을 빼는 연산을 제외한 나누기 연산들은 나누어 떨어질때만 포함될수 있음 - dp를 2부터 반복문을 돌면서 i번째 값에 f(i)를 집어넣음 - 나누기 연산은 나누어 떨어질 때만 연산 가능 import java.util.Scanner; public class Ex03_1로만들기 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int x = sc.nextInt(); //f(x)는 x를 1로 만들기 위한 최소 연산 횟수 //f(x) = min(f(x-1), f..

멀티미디어 네트워크

※kocw에서 제공하는 이석복 교수님의 컴퓨터네트워크 수업을 듣고 필기한 내용입니다. 출처를 따로 밝히지 않는 한 전부 해당 수업에서 제공한 자료들이며 제가 작성한 부분에 있어 틀린 부분이 있을 수도 있다는 점 양해바랍니다. Multimedia networking - 어떻게 유튜브 같은 멀티 미디어 서비스가 동작하는지 공부 멀티미디어 서비스가 제공하는 첫번째 기능: 오디오 - 아날로그 시그널을 디지털 신호로 변환하는 작업을 sampling 이라고 함 - 자연스러운 소리를 정영화된 비트로 변환하는 작업 - 샘플링 주기를 짧게하면 짧게할수록, 샘플링 할때 비트수가 많으면 많을수록 더 완벽하게 아날로그 소리와 같아짐 - 1초에 나타내는 비트 양: CD는 1.411 Mbps, MPS는 96, 128, 160 k..

다이나믹 프로그래밍 - 개미전사

문제 문제해결 f(i)는 i번째 식량창고까지 얻을수있는 식량의 최대값이고 k(i)는 i번째 식량창고에 있는 식량의 양일때 f(i) = max(f(i-1), f(i-2) + k(i)) f(i-1) : i번째 식량창고를 약탈하지 않을때 f(i-2) + k(i) : i번째 식량창고를 약탈할때 둘중 더 큰 값을 dp 배열에 저장 import java.util.Scanner; public class Ex02개미전사 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[] arr = new int[n]; for (int i = 0; i < n; i++) { arr[i] = sc.n..

다이나믹 프로그래밍 - 피보나치 수열

피보나치 수열: a(n) = a(n-1) + a(n-2) 1) 탑다운 방식 import java.util.Scanner; public class Ex01피보나치수열_top_down { //100까지 담을 수 있는 배열 static long[] arr = new long[101]; public static long fibo(int x){ //종료 조건 명시 if (x==1 || x==2) return 1; //계산 했던건 그대로 출력 if (arr[x]!=0) return arr[x]; //처음 계산하는건 계산 후 배열에 담앋두기 arr[x] = fibo(x-1) + fibo(x-2); return arr[x]; } public static void main(String[] args) { Scanner s..

링크계층 - Cellular Network

※kocw에서 제공하는 이석복 교수님의 컴퓨터네트워크 수업을 듣고 필기한 내용입니다. 출처를 따로 밝히지 않는 한 전부 해당 수업에서 제공한 자료들이며 제가 작성한 부분에 있어 틀린 부분이 있을 수도 있다는 점 양해바랍니다. Cellular Network - 전체 담당하는 지역을 셀로 나눠서 셀 하나에 기지국 하나 심어놓고 그 셀에 속하는 host들을 담당해서 cellular network 라고 불림 - host와 기지국은 무선으로 연결되어 있고 기지국과 라우터는 유선으로 연결되어 있음 - 2G 시절에는 FDMA/TDMA 방식을 사용했음, 보내는 통로를 나누거나 보내는 시간을 나눠서 전송하게 함 - 3G 부터는 CDMA를 사용, 각자 원할때 보내게 하되 수학적 기법을 사용해서 자기 자신의 신호는 잘 들리..