끄적끄적 코딩
article thumbnail
[C++] 백준 1966번 프린터 큐
알고리즘 2019. 9. 8. 01:16

큐 문제입니다. 우선순위가 있는 수열에서 큐에 넣었을때 m번째 수는 몇번째에 출력되는지 찾아야 합니다. 값들을 priority_queue에 넣고 일반 queue에는 값과 인덱스 번호를 넣습니다. 우선순위 큐의 가장 위에 값과 같을 때 까지 큐를 계속 돌립니다. 같아지면 우선순위 큐의 가장위를 pop하고 다시 반복합니다. 최종적으로 찾는 인덱스가 나오면 count를 출력합니다. count는 우선순위 큐를 pop할 때마다 세어주면 됩니다. #include #include #include using namespace std; int main(int argc, char *argv[]) { int ts; int n, m; int c; int num; int here; scanf("%d", &ts); while (..

article thumbnail
[C++] 백준 11866번 조세퍼스 문제 0
알고리즘 2019. 9. 8. 00:23

원형 큐 문제입니다. 큐에 값을 전부 넣고 K - 1까지의 값을 맨뒤로 넣습니다. 그렇게 되면 K번째의 수를 찾을 수 있고 K번째 수를 pop해줍니다. 이를 반복합니다. #include #include using namespace std; int main(int argc, char *argv[]) { int N, K; queue q; cin >> N >> K; for (int i = 1; N >= i; i++) { q.push(i); } cout

article thumbnail
[C++] 백준 10845번 큐
알고리즘 2019. 9. 7. 23:33

큐 문제입니다. 다음을 실행했을 때에 대한 결과값을 출력합니다. push pop size empty front back #include #include #include #include #include using namespace std; queue q; void push(int x) { q.push(x); } int pop() { if (q.empty()) { return -1; } int x = q.front(); q.pop(); return x; } int size() { return q.size(); } int empty() { if (q.empty()) { return 1; } else { return 0; } } int front() { if (q.empty()) { return -1; } el..

article thumbnail
[C++] 백준 17298번 오큰수
알고리즘 2019. 9. 5. 21:49

스택 문제입니다. A의 수열이 있을 때 Ai의 오른쪽에는 경우 Ai+1 ~ Ai+n가 있습니다. Ai+1 ~ Ai+n에서 Ai와 가장 가까운 Ai보다 큰 수를 구하면 됩니다. 없을 시에 -1을 출력합니다. vecot v에는 입력 받은 값을 수열을 넣습니다. vector ans에는 기본값 -1을 넣고 각 수열에 대한 오큰수의 값을 가집니다. stack s에는 v[i]에 대한 i의 index를 넣습니다. stack에는 오큰수를 확인 하지 못한 값들의 인덱스가 쌓이게 됩니다. 그리고 i를 증가하면서 stack에 쌓인 값들과 비교를 하면서 만약 v[i]가 더 크면 오큰수를 v[i]로 설정합니다. 이에 대한 값 설정은 ans배열에 넣습니다. #include #include #include #include #inc..

article thumbnail
[C++] 백준 1874번 스택 수열
알고리즘 2019. 9. 5. 03:52

스택 문제입니다. 스택의 push와 pop을 이용해서 입력된 배열의 모양을 만들 수 있는지 찾아야합니다. stack에 쌓이는 수는 1부터 n까지 차례대로 쌓입니다. (1부터 n = num) 비어있거나, top()이 현재 찾는 수와 다르면 num을 push해줍니다. top()이 찾는 수와 같으면 pop()을 해줍니다. num이 n보다 커지면 만들 수 없는 배열이 됩니다. #include #include #include #include #include using namespace std; int n; int arr[100010]; stack s; vector v; int num; int main(int argc, char *argv[]) { num = 1; scanf("%d", &n); for (int i ..

article thumbnail
[C++] 백준 4949번 균형잡힌 세상
알고리즘 2019. 9. 4. 19:41

스택 문제입니다. 1. 문자를 getline으로 줄 단위로 받습니다. 2. 각 문자를 확인하여 (, ), [, ]에 대해서 처리를 합니다. 3. (, [의 경우 stack에 push해줍니다. )은 !empty이면서 top에 (가 있으면 pop해줍니다. 아닐 시 flag = true (초기값 false) ]도 !empty이면서 top에 [가 있으면 pop해줍니다. 아닐 시 flag = true 4. 모든 문자를 확인 한 후 flag가 true거나, !empty()면 no를 출력 아닐 시 yes를 출력 #include #include #include #include #include using namespace std; int main(int argc, char *argv[]) { bool flag; stri..

article thumbnail
[C++] 백준 9012번 괄호
알고리즘 2019. 9. 4. 19:06

스택 문제입니다. 괄호는 항상 '(' 와 ')'으로 이루어지며 한 쌍이 되어야 합니다. ) (와 같이 반대로 나와서는 안됩니다. 스택에 한글자씩 push해줍니다. 그리고 ')' 가 나왔을 때 스택의 top부분이 '('인지 확인합니다. 맞으면 '('를 pop()해줍니다. 이는 ')'가 나올때마다 한쌍씩 제거해주는 방식입니다. 그리고 모든 글자를 전부 탐색한 후 empty()를 확인해서 남아 있다면 쌍이 맞지 않는 경우이므로 틀렸다고 판단합니다. #include #include #include #include #include using namespace std; int main(int argc, char *argv[]) { int n; bool flag; string str; stack s; cin >> n..

article thumbnail
[C++] 백준 2164번 카드2
알고리즘 2019. 9. 4. 12:13

큐 문제입니다. 1. 1~n까지의 수를 큐에 넣습니다. 2. q.pop(), 먼저 들어온 것을 제거합니다. 3. q.push(q.front()), 앞에 있는 것을 뒤에 넣습니다. 4. q.pop(), 앞에 있는 것을 제거합니다.(뒤로 옮긴 상태) 5. q.size()가 1이 될때까지 2~4 반복 6. q.front() 출력 #include #include #include #include #include using namespace std; int main(int argc, char *argv[]) { int n; queue q; cin >> n; for (int i = 1; i 1) { q.pop(); q.push(q.front()); q.pop(); } cout

검색 태그