λ¬Έμ
μ μλ₯Ό μ μ₯νλ νλ₯Ό ꡬνν λ€μ, μ λ ₯μΌλ‘ μ£Όμ΄μ§λ λͺ λ Ήμ μ²λ¦¬νλ νλ‘κ·Έλ¨μ μμ±νμμ€.
λͺ λ Ήμ μ΄ μ¬μ― κ°μ§μ΄λ€.
- push X: μ μ Xλ₯Ό νμ λ£λ μ°μ°μ΄λ€.
- pop: νμμ κ°μ₯ μμ μλ μ μλ₯Ό λΉΌκ³ , κ·Έ μλ₯Ό μΆλ ₯νλ€. λ§μ½ νμ λ€μ΄μλ μ μκ° μλ κ²½μ°μλ -1μ μΆλ ₯νλ€.
- size: νμ λ€μ΄μλ μ μμ κ°μλ₯Ό μΆλ ₯νλ€.
- empty: νκ° λΉμ΄μμΌλ©΄ 1, μλλ©΄ 0μ μΆλ ₯νλ€.
- front: νμ κ°μ₯ μμ μλ μ μλ₯Ό μΆλ ₯νλ€. λ§μ½ νμ λ€μ΄μλ μ μκ° μλ κ²½μ°μλ -1μ μΆλ ₯νλ€.
- back: νμ κ°μ₯ λ€μ μλ μ μλ₯Ό μΆλ ₯νλ€. λ§μ½ νμ λ€μ΄μλ μ μκ° μλ κ²½μ°μλ -1μ μΆλ ₯νλ€.
μ λ ₯
15
push 1
push 2
front
back
size
empty
pop
pop
pop
size
empty
pop
push 3
empty
front
μΆλ ₯
1
2
2
0
1
2
-1
0
1
-1
0
3
μ½λ
#include<iostream>
#include<string>
using namespace std;
// 10845λ² ν
//ν ꡬν
class QueueS {
public:
int front;
int back;
int size;
int *values; //λͺ¨λ κ°λ€μ λ΄μ λ°°μ΄μ κ°λ¦¬ν€λ ν¬μΈν°
//μμ±μ
QueueS() {
size = 10001; //νμ μ¬μ΄μ¦
values = new int[size];
front = 0;
back=0;
}
//μλ©Έμ
~QueueS() {
delete[] values;
}
void push(int data) {
if ((back+1)%size!=front) {
values[back] = data;
back = (back + 1) % size;
}
}
void pop() {
front = (front + 1) % size;
}
bool empty() {
if (back == front)
return true;
else
return false;
}
};
QueueS st;
void getNumSize(string str) {
int temp;
if (str == "back") {
if (st.back - st.front != 0) {
cout << st.values[st.back - 1] << "\n";
}
else cout << "-1\n";
}
else if (str == "front") {
if (st.back - st.front != 0) {
cout << st.values[st.front] << "\n";
}
else cout << "-1\n";
}
else if (str == "size") {
cout << st.back-st.front << "\n";
}
else if (str == "empty") {
cout << ((st.back - st.front==0)?true:false) << "\n";
}
else if (str == "pop") {
if (st.back - st.front!=0) {
cout << st.values[st.front] << "\n";
st.pop();
}
else {
cout << "-1\n";
}
}
else if (str == "push")
{
cin >> temp;
st.push(temp);
}
}
int main() {
int n;
string str;
cin >> n;
for (int i = 0; i < n; i++) {
cin >> str;
getNumSize(str);
}
return 0;
}
*κ°λ¨ν ν΄μ€*
νλ₯Ό ν΄λμ€λ₯Ό μ΄μ©νμ¬ κ΅¬ννμλ€. ν ν΄λμ€μ front,backμ μΌμ’ μ 맨 μμ index λ²νΈλ₯Ό λ§νλ κ²μ΄κ³ , backμ 맨 λ€μ indexλ²νΈλ₯Ό λ§νλ κ²μ΄λ€. κ·Έλ¦¬κ³ int* valuesλ₯Ό ν΅ν΄μ μ λ ₯ λ°μ κ°λ€μ backμ λλ €κ°λ©΄μ μ μ₯νμλ€.
C ꡬ쑰체μ C++μ queue λΌμ΄λΈλ¬λ¦¬λ₯Ό μ΄μ©νμ¬ κ΅¬ννμ λΆλ μμλ€.
https://blockdmask.tistory.com/119
[λ°±μ€ 10845] ν (C, C++ Queue)
μλ νμΈμ.BlockDMask μ λλ€. μ€λμ μκ΅μ μ¨μ§ μ΄νμ§Έ λλλ μ λλ€. μ κ° μνλ λ°λ‘ μ λ μκ΅ λ°λ 리μ νΈ κ³΅μ λ²€μΉμ μμμ λ¬Έμ λ₯Ό νμ΄λ³΄μμ΅λλ€. νμ€ν μ§μ€μ΄ μλμ; μ¬μ΄ μ
blockdmask.tistory.com
λ΄ μ½λλ ν€λλ₯Ό μΆκ°νμ§ μλλ° μκ°μ΄ λ무 κΈΈμ΄μ.. λΈλ‘κ·Έ κΈμ μ°Έκ³ νλ€ λ³΄λ μ무λλ coutλ¬Έμ λ μμ κ² κ°μμ printfλ‘ νλ² λ€ λ°κΏλ³΄μλ€.
κ·Έλ κ²κΉμ§ μν₯μ μ€κ±΄ μλκ°λ³΄λ€ μΆμ΄μ μ’ λ μ°Ύμ보λ
cin, cout μ μΆλ ₯ μλ λΉ λ₯΄κ² νλ λ°©λ²
scanfμ cinμ λ€μκ³Ό κ°μ΄ μλλ©΄μμ ν° μ°¨μ΄κ° λλ€. λ°λΌμ μ΄λ₯Ό ν΄κ²°νκΈ° μν΄ μ¬μ©ν μ μλ λ°©λ²μ΄ μλ€. 1 2 3 ios_base :: sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cs + endl 보λ€..
coding-insider.tistory.com
cinμ μλκ° μκ°λ³΄λ€ μμ² λ리λ€λκ²!
ios_base :: sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
μ΄ μ½λλ₯Ό μΆκ°ν΄μ£Όλ©΄ λΉ¨λΌμ§λ€κ³ λ νλ scanf,printfμ κ°μ΄ μ¬μ©νλ©΄ μλκ³ μ±κΈμ°λ λ μμμμλ§ μ¬μ© κ°λ₯ν΄μ μ€μ μ½λ μμμμλ μ¬μ©νλ κ²μ μ§μνλΌκ³ νλ€.
μΌλ¨ μ±κΈ μ°λ λ μμμ΄λ μ€λ€μ μΆκ°ν΄μ νλ² λλ €λ³΄μλ€.
μλλ λΉ¨λΌμ‘μ§λ§ λ©λͺ¨λ¦¬λ λμ΄λ¬λ€.. κ·Έλ¬λ©΄ scanf,printfλ‘ λ€ λ°κΏλ³΄κ² λ€.
κ²°κ³Όμ μΌλ‘λ λ©λͺ¨λ¦¬λ μ€μ΄λ€μλ€. μ무λλ scanf,printfλ‘ μΆλ ₯νλ λ°©μμΌλ‘ μμΌλ‘λ μ¨μΌκ² λ€.
μ½λ(scanf,printf)
#include<iostream>
#include<string.h>
using namespace std;
// 10845λ² ν
//ν ꡬν
class QueueS {
public:
int front;
int back;
int size;
int *values; //λͺ¨λ κ°λ€μ λ΄μ λ°°μ΄μ κ°λ¦¬ν€λ ν¬μΈν°
//μμ±μ
QueueS() {
size = 10001; //νμ μ¬μ΄μ¦
values = new int[size];
front = 0;
back = 0;
}
//μλ©Έμ
~QueueS() {
delete[] values;
}
void push(int data) {
if ((back + 1) % size != front) {
values[back] = data;
back = (back + 1) % size;
}
}
void pop() {
front = (front + 1) % size;
}
bool empty() {
if (back == front)
return true;
else
return false;
}
};
QueueS st;
void getNumSize(char str[]) {
int temp;
if (!strcmp(str, "back")) {
if (st.back - st.front != 0) {
printf("%d\n", st.values[st.back - 1]);
}
else printf("-1\n");
}
else if (!strcmp(str,"front")) {
if (st.back - st.front != 0) {
printf("%d\n", st.values[st.front]);
}
else printf("-1\n");
}
else if (!strcmp(str ,"size")) {
printf("%d\n", st.back - st.front);
}
else if (!strcmp(str,"empty")) {
printf("%d\n", ((st.back - st.front == 0) ? true : false));
}
else if (!strcmp(str, "pop")) {
if (st.back - st.front != 0) {
printf("%d\n", st.values[st.front]);
st.pop();
}
else {
printf("-1\n");
}
}
else if (!strcmp(str,"push"))
{
scanf("%d", &temp);
st.push(temp);
}
}
int main() {
int n;
char str[6];
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%s", str);
getNumSize(str);
}
return 0;
}
*μ΄ λ°©λ²λ§μ΄ λ§λ μ λ΅μ μλλλ€.
ν¨μ¬ μ’κ³ λΉ λ₯Έ λ€λ₯Έ μκ³ λ¦¬μ¦μ ꡬνν μ μμ΅λλ€.
μκ³ λ¦¬μ¦ κ³΅λΆνμλ λΆλ€ νμ΄ν ! '0'/*
'μκ³ λ¦¬μ¦ > BaekJoon' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[C++] BOJ 2480λ²: μ£Όμ¬μ μΈκ° (0) | 2022.03.19 |
---|---|
[C++] BOJ 1260λ²: DFSμ BFS (2) | 2022.03.11 |
BOJ 1157λ²: λ¨μ΄μ κ°μ (0) | 2021.01.28 |
BOJ 2675λ² : λ¬Έμμ΄ λ°λ³΅ (0) | 2021.01.28 |
BOJ 10809λ²: μνλ²³ μ°ΎκΈ° (0) | 2021.01.22 |