queue
-
등장 배경 이 2개의 자료구조가 등장한 배경은 연속적인 데이터를 처리하는 방식의 효율적인 처리를 하기 위함이다. 스택의 경우, LIFO(Last in First out) 구조로 후입선출이 필요할 때 사용하게 된다. 대표적인 예시로 하노이탑을 생각해보면 된다. 나중에 들어온 것이 먼저 들어온 것보다 더 먼저 처리되어야 한다. 큐의 경우, FIFO(First in First out) 구조로 선입선출이 필요할 때 사용하게 된다. 대표적인 예시로 줄 서는 것을 생각해보면 된다. 먼저 들어온 것이 더 먼저 처리되어야 한다. 기본적으로 데이터들을 순차적으로 처리하는데, 처리하는 순서의 기준이 분명한 경우 해당 자료구조를 사용하게 되면 쉽게 처리할 수 있게 된다. 구현 방법 스택과 큐를 구현하는 방법에는 연결리스트를..
2. 스택 / 큐등장 배경 이 2개의 자료구조가 등장한 배경은 연속적인 데이터를 처리하는 방식의 효율적인 처리를 하기 위함이다. 스택의 경우, LIFO(Last in First out) 구조로 후입선출이 필요할 때 사용하게 된다. 대표적인 예시로 하노이탑을 생각해보면 된다. 나중에 들어온 것이 먼저 들어온 것보다 더 먼저 처리되어야 한다. 큐의 경우, FIFO(First in First out) 구조로 선입선출이 필요할 때 사용하게 된다. 대표적인 예시로 줄 서는 것을 생각해보면 된다. 먼저 들어온 것이 더 먼저 처리되어야 한다. 기본적으로 데이터들을 순차적으로 처리하는데, 처리하는 순서의 기준이 분명한 경우 해당 자료구조를 사용하게 되면 쉽게 처리할 수 있게 된다. 구현 방법 스택과 큐를 구현하는 방법에는 연결리스트를..
2021.04.11 -
위의 STL 자료는 유명한 자료구조이므로 잘 학습해 두어야 한다. 1.Stack 이 알고리즘을 활용하기 위해서는 상단에 반드시 #include 을 선언해야 한다. 이 자료구조의 특징은 LIFO(Last In First Out)이다. 즉, 나중에 들어온 것이 먼저 나가는 자료구조이다. Stack을 사용하는 경우는 일반적으로 LIFO상황에 맞는 유형일 때 많이 사용된다. 물론 vector나 array를 활용해서 사용할 수도 있으나 컴파일 에러 등의 문제를 걱정하지 않아도 된다는 점에서 Stack STL을 사용하는 것이 유리하다. 선언 방법은 "stack 변수이름"이다. 사용방법은 다음과 같다. s.push(value) : 스택에 원소를 추가 s.pop() : 스택의 마지막 원소를 제거 (LIFO이므로 나가는..
4. 스택, 큐 (Stack/Queue)위의 STL 자료는 유명한 자료구조이므로 잘 학습해 두어야 한다. 1.Stack 이 알고리즘을 활용하기 위해서는 상단에 반드시 #include 을 선언해야 한다. 이 자료구조의 특징은 LIFO(Last In First Out)이다. 즉, 나중에 들어온 것이 먼저 나가는 자료구조이다. Stack을 사용하는 경우는 일반적으로 LIFO상황에 맞는 유형일 때 많이 사용된다. 물론 vector나 array를 활용해서 사용할 수도 있으나 컴파일 에러 등의 문제를 걱정하지 않아도 된다는 점에서 Stack STL을 사용하는 것이 유리하다. 선언 방법은 "stack 변수이름"이다. 사용방법은 다음과 같다. s.push(value) : 스택에 원소를 추가 s.pop() : 스택의 마지막 원소를 제거 (LIFO이므로 나가는..
2020.09.28 -
이 문제는 큐(Queue)를 활용하여 풀 수 있는 상황이다. 이를 인지하는 방법은 앞에서부터 k번째 숫자를 계속해서 지워나가는 것이므로, 앞에서부터 호출을 하는 자료형인 Queue임을 인지하면 된다. 추가적으로 k번째 숫자가 나올 때까지 원이므로 계속해서 앞에 있는 숫자가 뒤로 보내지는 상황이므로 k번쨰 숫자가 아닌 수들은 pop하고 push하여 뒤로 보내면 된다. 해당하는 알고리즘으로 코드를 구현하면 다음과 같다. #include #include #include #include #include #include #include using namespace std; int main(void){ int n, k; cin >> n >> k; queue circular_data; vector result_dat..
[백준 1158번] [큐] 요세푸스 문제이 문제는 큐(Queue)를 활용하여 풀 수 있는 상황이다. 이를 인지하는 방법은 앞에서부터 k번째 숫자를 계속해서 지워나가는 것이므로, 앞에서부터 호출을 하는 자료형인 Queue임을 인지하면 된다. 추가적으로 k번째 숫자가 나올 때까지 원이므로 계속해서 앞에 있는 숫자가 뒤로 보내지는 상황이므로 k번쨰 숫자가 아닌 수들은 pop하고 push하여 뒤로 보내면 된다. 해당하는 알고리즘으로 코드를 구현하면 다음과 같다. #include #include #include #include #include #include #include using namespace std; int main(void){ int n, k; cin >> n >> k; queue circular_data; vector result_dat..
2020.09.21 -
이 문제를 보고 큐(Queue)형태의 자료라는 것을 파악했어야 한다. 왜냐하면, 선입선출 형태로 자료를 호출하기를 요구하고 있기 때문이다. 다만, 이 문제에서는 독특한 지점이 단순히 선입 선출을 활용할 수 없고 중요도를 기준으로 다시 재배치해야한다는 점인데 중요도가 맨 앞에 위치한 것이 최대가 아니면 pop시키고 다시 그 수를 push해주면 된다. 추가적으로 m번째 숫자를 따로 저장을 해 두어야하기 때문에 pair자료형을 활용하여 해당하는 자료형을 구분한다. (문제에서 같은 숫자가 등장할 수 있다고 하였으므로, 같은 숫자를 구분하려면 어쩔 수 없이 pair자료형을 활용하여 추가적인 자료형을 도입하여 구분해야 한다.) 위의 알고리즘을 활용하여 코드를 구현하면 다음과 같다. #include #include ..
[백준 1966번] [큐] 프린터 큐이 문제를 보고 큐(Queue)형태의 자료라는 것을 파악했어야 한다. 왜냐하면, 선입선출 형태로 자료를 호출하기를 요구하고 있기 때문이다. 다만, 이 문제에서는 독특한 지점이 단순히 선입 선출을 활용할 수 없고 중요도를 기준으로 다시 재배치해야한다는 점인데 중요도가 맨 앞에 위치한 것이 최대가 아니면 pop시키고 다시 그 수를 push해주면 된다. 추가적으로 m번째 숫자를 따로 저장을 해 두어야하기 때문에 pair자료형을 활용하여 해당하는 자료형을 구분한다. (문제에서 같은 숫자가 등장할 수 있다고 하였으므로, 같은 숫자를 구분하려면 어쩔 수 없이 pair자료형을 활용하여 추가적인 자료형을 도입하여 구분해야 한다.) 위의 알고리즘을 활용하여 코드를 구현하면 다음과 같다. #include #include ..
2020.09.21