알고리즘/알고리즘 공부

3. 스택과 큐 문제 해법

한 개로 세 개 배열 한 개로 스택 세 개를 어떻게 구현할지 설명하라 이 문제는 스택이 해야 할 일을 얼마나 잘 지원하고 싶은가에 따라 난이도가 달라진다. 각 스택마다 고정된 크기를 할당하는 것으로 만족하고 싶으면 그렇게 해도 되지만, 그렇게 하면 다른 스택들은 전부 비어 있는데, 한 스택은 메모리가 거의 고갈되는 상황이 발생할 수 있다. 메모리 할당을 유연하게 할 수도 있는데, 이는 문제가 아주 많이 어려워진다고 할 수 있다. #1 고정 크기 할당 배열을 같은 크기의 세 부분으로 나누어 각각의 스택이 그 크기 내에서만 사용되도록 할 수 있다. 여기서 '['는 구간의 끝점을 포함시킨다는 의미이고, '('는 구간에 끝 점을 제외시킨다는 의미이다. class FixedMultiStack { private i..

알고리즘/알고리즘 공부

2. 연결리스트 문제 해법

▶ 중복 없애기 정렬되어 있지 않은 연결리스트가 주어졌을 때 이 리스트에서 중복되는 원소를 제거하는 코드를 작성하라. // 일반적으로 사용하는 노드를 우리의 실습환경에 맞게 재구성 했다. class Node { int data; Node next = null; Node(int d) { data = d; } void append(int d) { Node end = new Node(d); Node n = this; while(n.next != null) { n = n.next; } n.next = end; } // 중복 제거 메소드 void deleteDups(Node n) { // Set의 장점은 데이터가 기억될 때에 순서를 저장하지 않는다는 점이다. // 즉, List와 Set의 차이 없이 분명히 두 개..

알고리즘/알고리즘 공부

3. 스택과 큐

▶ 스택 구현하기 이전에는 연결리스트를 배웠다면, 이번에는 스택이다. 연결리스트는 하나의 노드를 다음 노드에 연결시켜 그 자료들을 관리하는 것이었다면, 스택은 말 그대로 데이터를 쌓아 올린다는 의미이다. 문제의 종류에 따라 배열보다 스택을 활용하는 것이 더 좋을 수 있기 때문에 분별하는 능력이 필요로 하다. 스택은, 가장 최근에 추가한 데이터 항목이 가장 먼저 제거되는 형식이다. 스택에서 가장 필수가 되는 연산을 살펴보자. pop() : 스택에서 가장 위에 있는 항목 제거 push(item) : item 하나를 스택의 가장 윗 부분에 추가 peek() : 스택의 가장 위에 있는 항목을 반환 isEmpty() : 스택이 비어 있을 때에 true를 반환 다음은 스택 예제코드이다. 스택은 같은 방향에서 아이템..

Heony
'큐' 태그의 글 목록