목록전체 글 (276)
HwangHub
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/rbsDa/btslDE2vtb7/Vtj0FAAbN6AKV023NykOX0/img.png)
SSH Secure Shell (Protocol)의 줄임말로, 두 컴퓨터 간 통신을 할 수 있게 해주는 하나의 프로토콜입니다. 우리들은 이미 HTTP, HTTPS 등의 프로토콜을 사용하여 다른 컴퓨터에 요청을 보내고 받는 작업을 수없이 하고 있죠. 서로 다른 컴퓨터 간 웹 페이지를 요청하고 받기 위해 브라우저를 사용하여 통신할 때 HTTP 또는 HTTPS를 사용하듯이, 데이터 전송과 원격 제어를 하기 위해 서로 다른 컴퓨터 간 shell을 통해 통신합니다. SSH 통신의 목적 데이터 전송 원격 제어 우리가 가장 일반적으로 마주할 수 있는 SSH 통신은 GitHub 등의 원격 레포지토리에 소스코드 파일을 push와 pull할 때 일어납니다. 또한 AWS와 같은 클라우드 서비스를 이용할 때 EC2와 같은 인..
1920번: 수 찾기 첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들 www.acmicpc.net 이 문제는 시간제한을 봤을 때, O(N^2)으로는 풀 수 없다. 즉, 일반적으로 우리가 떠올릴 수 있는 이중 반복문을 이용할 수 없다는 의미이다. 이렇게 시간복잡도를 고려할 때, 일반적으로 좋은 성능을 보여주는 것이 이진 탐색이다. public class B1920 { static int n, m; static int[] arr; static int[] ans; public static void main(Strin..
2178번: 미로 탐색 첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다. www.acmicpc.net 최단 기간의 경로를 구하고 있으므로 BFS가 적절한 선택일 것이다. public class B2178 { static int[] dx = {0, 1, 0, -1}; static int[] dy = {1, 0, -1, 0}; static boolean [][] visited; static int[][] arr; static int n, m; public static void main(String[] args) throws IOException { BufferedReader br = new Buf..
원래는 파이썬으로 알고리즘을 공부해왔지만, 자바로 언어를 바꿔야 할 것 같아서 풀었던 문제를 언어를 바꿔 다시 풀어보았습니다. 11724번: 연결 요소의 개수 첫째 줄에 정점의 개수 N과 간선의 개수 M이 주어진다. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) 둘째 줄부터 M개의 줄에 간선의 양 끝점 u와 v가 주어진다. (1 ≤ u, v ≤ N, u ≠ v) 같은 간선은 한 번만 주 www.acmicpc.net public class B11724 { static boolean visited[]; static ArrayList[] arr; public static void main(String[] args) throws IOException { BufferedReader br = new..
11921번: 0.1 첫째 줄에 수의 개수 N = 5,000,000 이 주어진다. 둘째 줄부터 N개의 줄에는 자연수가 한 줄에 하나씩 주어진다. 입력으로 주어지는 자연수는 10,000,000보다 작거나 같은 자연수이다. www.acmicpc.net 만점을 받을 수 없다고 한다. (정말 아주 간혹 자바로 풀 수 없는 문제가 있는 거라고 한다.)
1446번: 지름길 문제 해석 위 문제는 DP로 푸는 게 더 일반적인 것으로 보이는데, 다익스트라를 학습하는 단계라서 다익스트라로 풀어 보았다. 지름길 루트는 그래프에 정의해두면 될 것 같고, 모든 거리는 distance 리스트에 저장하면 될 것이다. 또한, 걸어가는 경우를 고려해야 하는데, 해당 케이스 또한 +1을 이용하여 그래프에서 뽑는 것 처럼 적용하면 된다. 풀이 코드 import heapq import sys # 입력 받기 n, d = map(int, input().split()) graph = [[] for _ in range(d+1)] INF = int(1e9) distance = [INF] * (d+1) # 간선 정보 입력 받기 for _ in range(n): start, end, cos..
1753번: 최단경로 첫째 줄에 정점의 개수 V와 간선의 개수 E가 주어진다. (1 ≤ V ≤ 20,000, 1 ≤ E ≤ 300,000) 모든 정점에는 1부터 V까지 번호가 매겨져 있다고 가정한다. 둘째 줄에는 시작 정점의 번호 K(1 ≤ K ≤ V)가 www.acmicpc.net 문제 해석 위 문제는 전형적인 다익스트라 문제이다. 시작점을 지정하고, 유향 그래프에서 최단 경로를 찾는 문제이니, 다익스트라 정의를 공부하는 문제라고 봐도 무방하다. 풀이 코드 import sys input = sys.stdin.readline sys.setrecursionlimit(10**5) import heapq # 노드 개수 n, 엣지 갯수 m n, m = map(int,input().split()) # 시작 노드 ..
11724번: 연결 요소의 개수 첫째 줄에 정점의 개수 N과 간선의 개수 M이 주어진다. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) 둘째 줄부터 M개의 줄에 간선의 양 끝점 u와 v가 주어진다. (1 ≤ u, v ≤ N, u ≠ v) 같은 간선은 한 번만 주 www.acmicpc.net 로직 구성: 우선 각 노드의 연결 관계가 무향이므로 간단한 그래프 문제라고 판단하였다. 또한 한번의 순회로 연결된 모든 노드를 방문, 그 이후 다른 노드에서 출발할 때 들르지 않은 노드가 있다는 건 별개로 연결된 그래프임을 이용하여 이를 count하였다. 특이점: 평소에는 sys.setrecursionlimit() 에 들어가는 값을 10**6 정도로 넉넉하게 설정해 왔다. 하지만 이와 같이 설정하면 메..
13023번: ABCDE 문제의 조건에 맞는 A, B, C, D, E가 존재하면 1을 없으면 0을 출력한다. www.acmicpc.net 문제 해석 : 노드의 관계를 묻고 있으니 그래프 문제이고, 모든 노드가 연결되어 있으면 되므로 깊이가 5가 되면 된다. (1부터 시작) """ 사람 수 N : 5