본문 바로가기

자료구조8

[프로그래머스] 기능 개발 (level.2) java 프로그래머스 기능개발기능개발 문제 설명 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. ​ 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수 있고, 이때 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포됩니다. ​ 먼저 배포되어야 하는 순서대로 작업의 진도가 적힌 정수 배열 progresses와 각 작업의 개발 속도가 적힌 정수 배열 speeds가 주어질 때 각 배포마다 몇 개의 기능이 배포되는지를 return 하도록 solution 함수를 완성하세요. ​ 제한 사항 작업의 개수(progresses, speeds배열의 길이)는 100개 이하입니다. 작업 진도는 100 미만의 자연.. 2019. 3. 25.
[자료구조] 우선순위 큐(PriorityQueue) -1 우선순위큐도 Queue라는 자료구조의 선입선출 규칙을 따른다.먼저 들어온 놈이 먼저 나간다.하지만 JAVA에서 제공하는 우선순위큐는 우선순위를 결정하여 들어온 순서에 상관없이 우선순위가 높은 엘리먼트가 나가게 된다.예제class Prisoner { ​ String name; int weight; // 형량 ​ public Prisoner(String name, int weight) { super(); this.name = name; this.weight = weight; } }이 클래스는 'name'과 'weight(형량)' 의 2가지 필드가 있다. 이 Prisoner 클래스를 PriorityQueue에 넣고, 형량에 따라 큐에서 나오게 하려한다.이제 이 Prisoner 클래스에 Comparable 인터.. 2018. 11. 2.
[백준] 1260 DFS와 BFS DFS와 BFS를 공부하고 좋은 예제를 찾아보다가 백준 알고리즘을 찾게되었다.DFS는 스택을 이용한 방식으로 현 경로상의 노드만을 기억하면 되기때문에 저장공간의 수요가 적다.목표노드가 깊은 곳에 있는 경우 빨리 구할 수 있다. BFS는 큐를 이용한 방식이다. 현 노드에서 인접한 노드를 모두 들리면서 탐색하는 방식이다. 문제. 그래프를 DFS로 탐색한 결과와 BFS로 탐색한 결과를 출력하는 프로그램을 작성하시오. 단, 방문할 수 있는 정점이 여러 개인 경우에는 정점 번호가 작은 것을 먼저 방문하고, 더 이상 방문할 수 있는 점이 없는 경우 종료한다. 정점 번호는 1번부터 N번까지이다.입력. 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 .. 2018. 8. 20.
- 큐 큐의 구조는 스택과 다르게 '선입선출'의 구조를 가진다. 즉, 먼저 들어온 것이 먼저 나가는 구조이다.큐의 예로는 은행에서 쉽게 볼 수 있는 번호표가 있다. 먼저 온 손님이 먼저 은행업무를 볼 수 있다. 큐에서는 맨 처음 위치와 맨 마지막 위치만 기억하면 쉽게 해결이 된다.이 위치를 큐에서는 front, rear라고 한다.위 그림에 Deletion, Insertion이라는 용어가 있다. 보통 큐에서 Dequeue, Enqueue라는 용어를 많이 쓰는데, Enqueue = Insertion Dequeue = Deletion 은행에서 보면 먼저 온 사람들은 이미 번호표를 받았기 때문에 마지막에 온 사람에게 번호표를 주기 때문에 rear부분에 Enqueue가 들어가게 된다. (1) Enqueue(삽입).. 2018. 7. 17.
ArrayList와 LinkedList 비교 + 제네릭 배열에서 자주 사용하는 ArrayList와 LinkedList가 헷갈려서 정리하려한다. 자바에서는 배열 사용시 초기 길이를 지정해야 하며 동적으로 배열의 길이를 변경할 수 없다. 먼저, ArrayList는 내부적으로 데이터를 배열에서 관리하며 추가, 삭제를 위해 임시 배열을 생성해 데이터를 복사한다. 따라서 대량의 자료를 추가, 삭제 하기 위해서는 데이터 복사가 많이 일어나 성능저하 우려가 있다. 각 데이터는 인덱스를 가지고 있기 때문에 한번에 참조가 가능해 내가 해당 인덱스를 알고 있다면 검색에는 좋다. LinkedList는 데이터를 저장하는 각 노드들이 링크로 앞뒤로 연결 되어있는 형태이다. 데이터 추가, 삭제시 노드의 연결을 끊고 원하는 부분에 추가, 삭제가 가능하기 때문에 유리하지만, 검색시에는 .. 2018. 2. 5.
순차탐색 순차탐색(sequential search) - 탐색은 컴퓨터가 가장 많이 하는 작업중 하나이기 때문에, 탐색을 효율적으로 수행하는 것은 매우 중요하다. - 탐색의 단위는 항목이고, 항목 안에는 항목과 항목을 구별시켜주는 key가 존재하는데, 이를 탐색키라고 한다. 정렬되지 않은 배열에서의 탐색 : 배열을 정렬시키지 않아도 되지만, 비효율적 정렬 된 배열에서의 탐색 : 유지보수는 쉽지만, 값이 클 경우 비효율적. - 순차탐색은 간단한 탐색을 할 경우에만 사용하는 것이 좋다. 2018. 1. 29.