본문 바로가기

5

[ 백준 2606 ] 바이러스 2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어 www.acmicpc.net 문제 신종 바이러스인 웜 바이러스는 네트워크를 통해 전파된다. 한 컴퓨터가 웜 바이러스에 걸리면 그 컴퓨터와 네트워크 상에서 연결되어 있는 모든 컴퓨터는 웜 바이러스에 걸리게 된다. 예를 들어 7대의 컴퓨터가 과 같이 네트워크 상에서 연결되어 있다고 하자. 1번 컴퓨터가 웜 바이러스에 걸리면 웜 바이러스는 2번과 5번 컴퓨터를 거쳐 3번과 6번 컴퓨터까지 전파되어 2, 3, 5, 6 네 대의 컴퓨터는 웜 바이러스에 걸리게 된다. 하지만 4번과 7번 컴퓨터는 1번 컴퓨.. 2021. 6. 7.
[ 백준 2252 ] 줄 세우기 문제 N명의 학생들을 키 순서대로 줄을 세우려고 한다. 각 학생의 키를 직접 재서 정렬하면 간단하겠지만, 마땅한 방법이 없어서 두 학생의 키를 비교하는 방법을 사용하기로 하였다. 그나마도 모든 학생들을 다 비교해 본 것이 아니고, 일부 학생들의 키만을 비교해 보았다. 일부 학생들의 키를 비교한 결과가 주어졌을 때, 줄을 세우는 프로그램을 작성하시오 입력 첫째 줄에 N(1≤N≤32,000), M(1≤M≤100,000)이 주어진다. M은 키를 비교한 회수이다. 다음 M개의 줄에는 키를 비교한 두 학생의 번호 A, B가 주어진다. 이는 학생 A가 학생 B의 앞에 서야 한다는 의미이다. 학생들의 번호는 1번부터 N번이다. 출력 첫째 줄부터 앞에서부터 줄을 세운 결과를 출력한다. 답이 여러 가지인 경우에는 아무거.. 2021. 2. 26.
[ JAVA ] Priority Queue ( 우선순위 큐 ) 총 정리 일반적인 자료구조의 큐는 FIFO ( First In First Out ) 선입선출 의 구조를 가지고 있습니다. 그러나 기존의 큐와는 다르게 우선순위 큐는 먼저 들어온 순서대로 나가는 것이 아니라 우선순위가 높은 엘리먼트가 먼저 나가는 구조를 가지고 있습니다. 기본적으로 힙 구조를 이용하여 구현하며 우선순위에 따라 최소 힙 / 최대 힙 으로 구현합니다. 내부 요소들은 힙 구조로 이진트리로 구성되어 있습니다. 삽입 시 -> 마지막 노드에 삽입 후 부모 노드와 비교하며 Swap 삭제 시 -> 우선순위가 가장 높은 루트 노드를 삭제 후 마지막 노드를 루트 노드에 올린 후 자식 노드들과 비교하며 Swap PriorityQueue 자료구조를 사용하기 전 import java.util.* 필수! import jav.. 2021. 2. 5.
[ JAVA ] Stack 총 정리 자료구조의 큐와 비교되는 형태로 LIFO ( Last In First Out ) 후입선출 의 구조를 가지고 있습니다. 그래프의 DFS( 깊이우선탐색 )에 사용 재귀적 함수 호출 시 사용 Stack 자료구조를 사용하기 전 import java.util.* 필수! import java.util.*; Stack 선언 import java.util.*; Stack stack = new Stack(); //int형 스택 선언 Stack 값 삽입 Stack stack = new Stack(); // int형 스택 선언 stack.push(2); // stack에 2 추가 stack.push(4); // stack에 4 추가 stack.push(5); // stack에 5 추가 // 2, 4, 5 Stack 값 삭제.. 2021. 2. 2.
[ JAVA ] Queue 총 정리 자료구조의 스택과 항상 비교되는 형태로 FIFO ( First In First Out ) 선입선출의 특징을 가지고 있습니다. BFS ( 그래프 넓이 우선 탐색 ) 에서 사용 JAVA에서 Queue 자료구조를 사용하기 위해서는 import java.util.* 필수! import java.util.*; Queue 선언 Queue queue = new LinkedList(); // linkedlist를 이용하여 int형 queue 선언 // 물론 다른 타입의 queue도 선언 가능 Queue에 값 삽입 Queue queue = new LinkedList(); queue.add(1); // queue에 값 1 추가 queue.offer(3); // queue에 값 3 추가 // add와 offer를 사용하여 .. 2021. 1. 31.