본문 바로가기

CS+PS/data structure10

[Queue/Deque] 큐/덱 - 토이 편집기 Undo Redo 토이 편집기 Undo Redo 토이 편집기에 문자를 입력하는데 실행취소(Undo)기능과 다시실행(Redo)기능을 지원하려고 한다. 실행취소(Undo) 기능은 제일 최근에 작업(Last In)한 것을 취소시키는 것(First Out)이다. 실행취소를 무작정 할 수 있는 것은 아니어서 저장 공간을 N개로 제한한다. 즉, N+1번째 실행취소가 일어나면 제일 오래된 데이터가 사라지도록 한다. 즉, 가장 오랫전에 있던 데이터를 차례대로 없애는 방법이다. 밑 빠진 스택으로 볼 수 있다. 스택의 밑과 위를 구분하기 위하여 한 칸은 비워둔다. 예를 들어, 저장 공간이 11인 경우(N=11), 문자가 순서대로 10개 a b c d e f g h i j 입력된 상태에서 문자 k를 추가하면 a가 사라지고 k가 저장된다. 또.. 2023. 7. 9.
[Queue/Deque] 큐/덱 - BFS 미로찾기 BFS for Maze N × M크기의 배열로 표현되는 미로가 있다. 미로에서 0은 이동할 수 있는 칸을 나타내고, 1은 이동할 수 없는 칸을 나타낸다. S는 출발점을 의미하며 T는 도착점을 의미한다. 이러한 미로가 주어졌을때 BFS를 수행하여 출발점에서 도착점으로 이동하는 최단 경로의 칸 수를 구하는 프로그램을 작성하시오. 한 칸에서 다른 칸으로 이동할 때, 서로 인접한 칸으로만 이동할 수 있다. 칸의 수를 셀 때는 S와 T도 포함한다. Input 첫째 줄에 두 정수 N, M (2 ≤ N, M ≤ 50)이 주어진다. 다음 N개의 줄에는 M개의 문자로 미로가 주어진다. 각각의 문자들은 붙어서 입력으로 주어진다. Output 첫째 줄에 BFS를 통해 지나야 하는 최단 경로의 칸 수를 출력한다. 도착점에 도.. 2023. 7. 9.
[Queue/Deque] 큐/덱 - 정렬 가능 여부 확인 프로그램 정렬 가능 여부 확인 프로그램 입력큐에 저장되어 있는 정수형 숫자들을 스택을 이용하여 다른 출력큐에 정렬할 수 있는가를 확인하는 프로그램을 만들고자 한다. 이때 큐와 스택은 배열을 이용하여 구현한다. 여기에서 허용되는 연산은 다음과 같다. 입력큐: dequeue 출력큐: enqueue 스택: push and pop 예를 들어, 입력큐에 원소 1 2 3 4 5가 저장되어 있고 내림차순으로 정렬한다고 가정하면, 스택에 모든 원소들 차례대로 집어넣고, 하나씩 꺼내어 출력큐에 입력하면 내림차순으로 정렬할 수 있다. 입력큐에서 나온 숫자는 바로 출력큐로 가도 되고 스택을 거쳤다가 출력큐로 가도 된다. 허용되는 연산만을 사용했을때 최종적으로 출력큐에 정렬된 숫자를 배치 할 수 있는지 없는지를 판단한다. Input .. 2023. 7. 9.
[Queue/Deque] 큐/덱 - 미팅 주선 프로그램 미팅 주선 프로그램 간단한 미팅 주선 프로그램을 만들고자 한다. 덱 (deque)을 이용하여 남성 큐와 여성 큐를 구현한다 (여기서 덱은 배열을 이용해서 구현해야한다). 매 시간 한명의 고객이 미팅 주선을 요청하기 위해 방문하면 성별에 맞추어 큐의 맨 뒤에 삽입한다. 만약에 해당 고객이 돈을 더 내서라도 순서를 기다리지 않고 즉시 미팅이 주선되길 원하면 큐의 맨 처음에 삽입한다. 매 시간 고객이 대기열에 입장하고 나면, 남성 큐와 여성 큐에서 맨 앞에 있는 남성과 여성의 미팅이 매칭된다. 만약 매칭할 남성 또는 여성이 없는 경우 다음 시간으로 넘어간다. Input 입력의 첫 줄에는 미팅 주선소에 입장하고자 하는 총 인원의 수 n (1 n; // string s; int id; string name; ch.. 2023. 7. 9.