알고리즘/백준
-
[백준 1406] 에디터 (cpp, stack)알고리즘/백준 2021. 12. 19. 03:51
🚀 들어가며... 스택을 사용해서 풀 수 있는 문제이다. 커서를 기준으로, 앞과 뒤로 스택을 두개를 준다. 스택1 : 커서 앞 스택2 : 커서 뒤 명령어에 맞추어서 스택에 할당한다. 마지막으로는 스택2에 모두 담아서, 출력시켜준다. 🔗 문제 https://www.acmicpc.net/problem/1406 1406번: 에디터 첫째 줄에는 초기에 편집기에 입력되어 있는 문자열이 주어진다. 이 문자열은 길이가 N이고, 영어 소문자로만 이루어져 있으며, 길이는 100,000을 넘지 않는다. 둘째 줄에는 입력할 명령어의 개수 www.acmicpc.net 💌 소스코드 #include #include #include using namespace std; int main(){ string str; stack st1;..
-
[백준 1874] 스택 수열 (cpp, stack)알고리즘/백준 2021. 12. 19. 03:46
🚀 들어가며... 1부터 시작하여, push의 경우 "+"를 출력하고 pop의 경우 "-"를 출력하는 문제이다. 스택에 push하는 순서는 반드시 오름차순을 지켜야한다. 🔗 문제 https://www.acmicpc.net/problem/1874 1874번: 스택 수열 1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다. www.acmicpc.net 💌 소스코드 #include #include #include using namespace std; int main(void){ stack ..
-
[백준 9012] 괄호 (cpp, stack)알고리즘/백준 2021. 12. 12. 16:44
🚀 들어가며... 백준 9012번 문제 풀이다. 두세번 정도 풀었는데, 이번에는 스택으로 풀었습니다. 🔗 문제 https://www.acmicpc.net/problem/9012 9012번: 괄호 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 www.acmicpc.net 📑 내용 1. "(" 의 경우 stack.push("(") 2. ")"의 경우 스택을 확인하여 "("이 있으면, 통과 스택에 "("이 없으면, 불가능함 (스택에 강제로 "X" push, 이후 스택이 비어질 수가 없다.) 3. 괄호쌍이 맞으면, 스택이 비어있어..
-
[백준 9093] 단어 뒤집기 (cpp, stack)알고리즘/백준 2021. 12. 12. 16:13
🚀 들어가며... 백준 9093번 문제 풀이다. 단순한 구현 문제 (stack) 🔗 문제 https://www.acmicpc.net/problem/9093 9093번: 단어 뒤집기 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 문장이 하나 주어진다. 단어의 길이는 최대 20, 문장의 길이는 최대 1000이다. 단어와 단어 사이에는 www.acmicpc.net 💌 소스코드 1. ' ' 혹은 '\n' 인 경우 스택 전체 pop 2. 그 외의 경우 스택에 push 2. getline 사용 입력 버퍼의 차이에 유의하여, 한번 비워준다. #include #include #include using namespace std; int main(void){ int n; c..
-
[백준 10828] 스택 (cpp, stack)알고리즘/백준 2021. 12. 12. 15:14
🚀 들어가며... 백준 10828번 문제 풀이다. 단순한 구현 문제 🔗 문제 https://www.acmicpc.net/problem/10828 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 💌 소스코드 #include #include #include using namespace std; int main(void){ int n; string cmd; stack st; cin >> n; while(n > 0){ cin >> cmd; if(cmd=="push"){ int num; cin >> n..
-
[백준 1764] 듣보잡알고리즘/백준 2019. 5. 17. 00:30
N과 M의 제한이 50만이기 때문에 정렬을 사용하지 않고 STL의 set을 사용했다. set을 사용하여 입력과 동시에 정렬이 가능하게 하였다. 우선 듣지 못한 사람, 모두를 set s에 넣고 본적 없는 사람이, 들어보지도 못했다면 if(s.find() != s.end()) set ans에 insert시키는 방식이다. 출처 : https://www.acmicpc.net/problem/1764 문제 김진영이 듣도 못한 사람의 명단과, 보도 못한 사람의 명단이 주어질 때, 듣도 보도 못한 사람의 명단을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 ..
-
[백준 7785] 회사에 있는 사람알고리즘/백준 2019. 5. 17. 00:19
입력 N 제한이 100,000이기 때문에, set을 사용하여 입력과 동시에 정렬을 가능하게 하였다. enter 명령에는 insert시키고 leave 명령에는 erase를 시키면 되는 문제이다. 사전 역 순으로 출력하기 때문에, rbegin()과 rend()를 사용하였다. 출처 : https://www.acmicpc.net/problem/7785 문제 상근이는 세계적인 소프트웨어 회사 기글에서 일한다. 이 회사의 가장 큰 특징은 자유로운 출퇴근 시간이다. 따라서, 직원들은 반드시 9시부터 6시까지 회사에 있지 않아도 된다. 각 직원은 자기가 원할 때 출근할 수 있고, 아무때나 퇴근할 수 있다. 상근이는 모든 사람의 출입카드 시스템의 로그를 가지고 있다. 이 로그는 어떤 사람이 회사에 들어왔는지, 나갔는지가..
-
[백준 1927] 최소 힙알고리즘/백준 2019. 5. 13. 14:57
백준 11279번과 매우 유사한 문제이다. (관련글) 다른 점이라면, 단지 출력을 할 때 가장 작은 수를 출력한다는 점이다. 1. 배열에 자연수 x를 넣는다. 2. 배열에서 가장 작은 값을 출력하고, 그 값을 배열에서 제거한다. 이때 X가 0이면 배열에서 가장 큰 값을 출력하고 X가 자연수라면 (X>0)이면 배열에 X를 삽입한다. 배열에 자연수 X를 넣을 때 마다, top의 위치가 바뀌는 우선 순위 큐를 사용하면 쉽게 풀 수 있다. 출처 : https://www.acmicpc.net/problem/1927 문제 널리 잘 알려진 자료구조 중 최소 힙이라는 것이 있다. 최소 힙을 이용하여 다음과 같은 연산을 지원하는 프로그램을 작성하시오. 배열에 자연수 x를 넣는다.배열에서 가장 작은 값을 출력하고, 그 값..