분류 전체보기
-
[백준]17135. 캐슬 디펜스 - Java알고리즘/백준 2021. 2. 19. 01:14
📄 링크 캐슬 디펜스 💡 문제 분석 M열 중에 궁수를 배치할 3열을 뽑습니다. (조합) 게임을 할 때마다 원래 배열을 유지해야 하기 때문에 미리 복사를 하고 시작합니다 가장 아래 행부터 한 칸씩 위로 올라가며 궁수 위치 한 칸 위에서 BFS로 제거할 적을 선택합니다 bfs 거리를 늘려가며 사정거리보다 커지면 종료시킵니다 왼쪽 적을 우선적으로 선택하기 때문에, 방향 배열의 순서가 중요합니다 동시에 같은 적을 쏠 수 있기 때문에 미리 체크를 해놓고 한꺼번에 제거했습니다 가장 많은 적을 없앤 경우를 출력합니다 ⌨️ 코드 public class _17135_캐슬디펜스 { static int N, M, D, ret = 0; static int[] pick, dy = {0, -1, 0}, dx = {-1, 0, 1..
-
네트워크 계층 - 제어 평면Computer Science/Network 2021. 2. 19. 01:13
1. 개요 라우터별 제어를 기반으로 하는 제어 평면이란 어떤 것인가? 이러한 경우 네트워크 제어 및 데이터 평면이 “단일체”로 구현된다고 하는데 이는 무슨 의미인가? 라우팅 알고리즘들이 모든 라우터 각각에서 동작하는 경우, 포워딩과 라우팅 기능이 모두 개별 라우터에 포함되어 있음. 각 라우터는 다른 라우터의 라우팅 구성요소와 통신하여 자신의 포워딩 테이블의 값을 계산하는 라우팅 구성요소를 가지고 있다 논리적 중앙 집중형 제어를 기반으로 하는 제어 평면이란 무슨 뜻인가? 논리적으로 집중된 컨트롤러가 포워딩 테이블을 작성하고 이를 모든 개별 라우터가 사용할 수 있도록 배포한 경우를 나타냄 2. 라우팅 알고리즘 중앙 집중형 라우팅과 분산 라우팅 알고리즘의 속성을 비교 대조 중앙 집중형 라우팅 알고리즘은 네트워..
-
네트워크 계층 - 데이터 평면Computer Science/Network 2021. 2. 19. 01:12
1. 네트워크 계층 개요 라우터와 링크 계층 스위치의 기본적인 차이는 무엇인가? 링크 계층 스위치는 링크 계층 프레임의 필드 값(MAC 주소 등..)에 근거하여 포워딩을 결정함, 반면 라우터는 네트워크 계층 필드 값(IP 주소?)에 근거하여 포워딩을 결정 트랜스포트 계층 패킷의 이름은 세그먼트, 링크 계층 패킷의 이름은 프레임이다. 네트워크 계층 패킷의 이름은 무엇인가? 데이터그램, 혹은 그냥 패킷이라고도 부르는 것 같음 라우팅과 포워딩의 차이는 무엇인가? 포워딩 : 패킷이 라우터의 입력 링크에 도달했을 때 그 패킷을 적절한 출력 링크로 이동시키는 것 라우팅 : 송신자가 수신자에게 패킷을 전송할 때 패킷 경로를 결정하는 것 라우터에서 포워딩 테이블의 역할은? 포워딩 테이블 엔트리에 저장되어 있는 헤더의 ..
-
[백준]2580. 스도쿠 - Java카테고리 없음 2021. 2. 17. 23:58
📄 링크 스도쿠 💡 문제 분석 9 * 9 스도판의 빈칸을 완성하는 문제 총 81칸이므로 첫 칸부터 순서대로 다 돌아보며 가로, 세로, 3 * 3 배열에 동시에 없는 숫자를 넣어봅니다. 전형적인 백트래킹 문제 모든 칸을 성공했다면 출력 여러가지 답이 있을 수 있기 때문에 한 개만 출력하기 위해 System.exit() 사용 ⌨️ 코드 public class _2580_스도쿠 { static int[][] map; static boolean[][] col, row, square; public static void main(String[] args) { Scanner sc = new Scanner(System.in); map = new int[9][9]; col = new boolean[9][10]; row ..
-
[백준]9663. N-Queen - Java알고리즘/백준 2021. 2. 17. 23:55
📄 링크 N-Queen 💡 문제 분석 N * N 크기의 체스판 위에 N개의 퀸을 놓아야 하는 문제입니다 1행부터 N행까지 내려가며 행마다 하나의 퀸을 놓는 방식으로 하기로 했습니다 여기서 어떤 열에 퀸을 놓을 지 정할 때 이미 놓은 퀸들과 왼쪽 대각선, 오른쪽 대각선, 세로가 겹치면 안됩니다. (1, N - 1)에서 오른쪽 대각선 방향으로 가장 밑으로 갔을 때 2 * N - 1 까지 갈 수 있기 때문에 대각선 배열은 2 * N - 1의 크기로 할당해 주었습니다. ⌨️ 코드 public class _9663_Nqueen { static int N, ret = 0; static boolean[] diag1, diag2, col; public static void backtracking(int cnt){ if..
-
[백준]2206. 벽 부수고 이동하기 - Java알고리즘/백준 2021. 2. 17. 23:50
📄 링크 벽 부수고 이동하기 💡 문제 분석 (1, 1) 에서 (N, M)까지 최단경로를 찾는 문제입니다. 일반적인 BFS와 같지만 벽을 딱 한 번 부술 수 있다는 점이 다릅니다. 어떤 벽을 부숴야 최단 거리로 갈 수 있는지 모르기 때문에 그냥 다 부숴보기로 합니다. dist[4][2][1] = (4, 2)에 벽을 한 번 부수고 도달했을 때 최단거리입니다, dist[4][2][0]이라면 벽을 안 부수고 도달했기 때문에 한 번의 기회가 남아 있다는 것을 알 수 있습니다 bfs를 돌면서 길이 있다면 그냥 가고 없다면, 벽을 부순 적이 없다면 부수고, 부순 적이 있다면 가지 못합니다. 그리고 따로 방문처리 배열을 만들지 않고, dist 배열이 갱신된 적이 있다면 그냥 넘어가도록 합니다 ⌨️ 코드 public c..
-
[백준]12865. 평범한 배낭 - Java알고리즘/백준 2021. 2. 17. 23:50
📄 링크 평범한 배낭 💡 문제 분석 최대 K 무게를 담을 수 있는 배낭에 물품들을 담을 때, 가치를 가장 크게 할 수 있는 방법을 구하는 문제입니다. 일단 물품 수 100개 중에 몇 개인지 모를 물품을 골라 무게를 비교하는 완전탐색은 당연히 시간 초과가 날 것 같아서 메모이제이션를 사용하기로 했습니다 일단 물품들을 배열에 저장합니다. cache[idx][weight] = 배열의 idx 인덱스 이후의 물품들을 사용해서 weight 무게 내로 가질 수 있는 최대 가치입니다. idx를 하나씩 늘려가며 현재 물품을 가방에 넣을 때와, 넣지 않을 때 중 가치가 높은 것을 cache 배열에 저장합니다 0번 인덱스부터 K의 무게로 시작하는 메모이제이션 함수를 출력합니다 ⌨️ 코드 public class _12865_..
-
[Kotlin] 인터페이스, 변경자Computer Science/Kotlin 2021. 1. 20. 15:51
코틀린 인터페이스 코틀린 인터페이스 안에는 추상 메소드뿐 아니라 구현이 있는 메소드도 정의할 수 있음(자바의 디폴트 메소드랑 비슷) 하지만 인터페이스에는 아무런 상태(필드)도 들어갈 수 없다 Clickable 인터페이스를 정의해서, Button 클래스에서 click 메서드를 오버라이드 했음 이 인터페이스를 구현하는 모든 비추상 클래스는 click에 대한 구현을 제공해야 함 자바에서는 extends와 implements 키워드를 사용하지만, 코틀린에서는 클래스 이름 뒤에 콜론(:)을 붙이고 인터페이스와 클래스 이름을 적는 것으로 클래스 확장과 인터페이스 구현을 모두 처리함 인터페이스는 개수 제한 없이 마음대로 구현할 수 있지만, 클래스는 오직 하나만 확장할 수 있음 자바에서는 @override를 꼭 붙이지..