5

Homework #4haptic.khu.ac.kr/aoop/Homework_4.pdf · 2014. 5. 15. · Homework #4 • 큐와스택에임의의integer 10개를enqueue와push를한다음dequeue 와pop을 하면서나온값을출력하라

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Homework #4haptic.khu.ac.kr/aoop/Homework_4.pdf · 2014. 5. 15. · Homework #4 • 큐와스택에임의의integer 10개를enqueue와push를한다음dequeue 와pop을 하면서나온값을출력하라
Page 2: Homework #4haptic.khu.ac.kr/aoop/Homework_4.pdf · 2014. 5. 15. · Homework #4 • 큐와스택에임의의integer 10개를enqueue와push를한다음dequeue 와pop을 하면서나온값을출력하라

Homework #4

• 스택(Stack) : 마지막에 삽입된 것이 먼저 제거(LILO, Last-in, First-out)되는 데이터구조로서, 모든 데이터 삽입과 삭제는 탑(Top)이라 불리는 리스트 한쪽 끝에서 이루어진다. (http://ko.wikipedia.org/wiki/%EC%8A%A4%ED%83%9D 등 인터넷참조)

• 큐 (Queue) : 마지막에 삽입된 것이 먼저 제거(FIFO, First in, first out)되는 데이터 구조로서, 데이터 삽입은 back라 불리는 한쪽 끝에서, 데이터 삭제는 front이라는 다른쪽 끝에서 이루어진다. (http://ko.wikipedia.org/wiki/%ED%81%90_(%EC%9E%90%EB%A3%8C_%EA%B5%AC%EC%A1%B0 등 인터넷 참조)

Top

스택

• 다양한 type의 데이터를 저장할 수 있는 스택 템플릿과 큐 탬플릿을 구현하라.

• 기본적인 스택과 큐의 규칙만 지켜지고 기본 함수들 (push, pop, enqueue dequeue등등)만 구현되면 데이터 저장 부분은 어떤 형태로 구현하던 상관없음 (예: 배열로구현, 링크드 리스트로 구현 등등).

• STL에서 미리 구현된 것을 사용 금지.

• 스택과 큐의 기본 정의 및 설명은 아래 및 인터넷 참조

Page 3: Homework #4haptic.khu.ac.kr/aoop/Homework_4.pdf · 2014. 5. 15. · Homework #4 • 큐와스택에임의의integer 10개를enqueue와push를한다음dequeue 와pop을 하면서나온값을출력하라

Homework #4

• 큐와 스택에 임의의 integer 10개를 enqueue와 push를 한 다음 dequeue 와 pop을

하면서 나온값을 출력하라.

• char st[] = “In computer science, a stack is a particular kind of abstract data

type or collection in which the principal (or only) operations on the collection

are the addition of an entity to the collection”; 를 선언하고 글자 하나하나를

enqueue, push 한 다음 dequeue, pop을 하여 결과를 출력하라.

• 이전에 구현한 fraction 클래스를 include해서 fraction 객체 3개 (1/3, 3/5, 10/3)를

만들어 다시 enquene, push와 dequeue, pop 을 하여 결과를 출력하라.

Page 4: Homework #4haptic.khu.ac.kr/aoop/Homework_4.pdf · 2014. 5. 15. · Homework #4 • 큐와스택에임의의integer 10개를enqueue와push를한다음dequeue 와pop을 하면서나온값을출력하라

Homework #4

• 앞에서 읽으나 뒤에서 읽으나 똑같은 단어나 문장을 회문이라 한다. 예를 들어,‘ 기러

기’,‘ 토마토’,‘ 소주만병만주소’등가운데문자를중심으로대칭적으로 서있는문자열을

말한다.

• 사용자 입력으로 문장을 받아 스택과 큐를 사용해 이 문장이 회문인지 검사하는 구문

을 구현하라.

• 알고리즘 힌트: 들어오는문자열을 순서대로읽어서 스택과 큐, 두 가지자료구조에넣

고각각의 자료구조에서하나씩 끄집어 내서 비교. 스택에서튀어 나오는 것은 가장 마

지막에 들어간 문자인 반면, 큐에서 나오는것은 가장먼저 들어간 문자이므로 계속 끄

집어 내면서 둘을 계속 비교해 나가면 회문 검사 가능.

• Main 함수에서는 적절히 입력문과 출력문을 만들어 입력문이 회문인지 아닌지를 검

사하여 결과 출력.

Page 5: Homework #4haptic.khu.ac.kr/aoop/Homework_4.pdf · 2014. 5. 15. · Homework #4 • 큐와스택에임의의integer 10개를enqueue와push를한다음dequeue 와pop을 하면서나온값을출력하라

Homework #4

• 10진수를 2진수로 바꾸는 일반적인 알고리즘은 다음과 같다.

Read a number

Iteration (while number is greater than zero)

Find out the remainder after dividing the number by 2

Print the remainder

End the iteration

• 위 알고리즘은 아직 불완전하다. 왜냐하면 위 알고리즘과 같이 reminder 를 순서대

로 취하면 그 결과값은 자릿수가 반대로 된 결과값이기 때문이다. 예를 들어 23의 2

진수를 위 알고리즘대로 구하면 11101 이 되는데, 사실 정답은 이 수를 뒤집은

10111이다.

• 위 알고리즘에 스택을 이용한 코드를 추가하여 정확한 답이 나오도록 하라.

• Main 함수에서는 사용자 입력으로 integer 값을 하나 받고 자기가 구현한 알고

리즘으로 이 수의 2진수 값을 출력하는 코드를 만들어 알고리즘을 test하라.