본문 바로가기

스택4

백준 1874번(스택 수열) c++ 문제 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 문제 풀이 문제 자체가 조금 이해하기 난해할 수 있다. 예제 1번을 풀이를 하자면 [4, 3, 6, 8, 7, 5, 2, 1] 최종적으로 이러한 수열을 만들어야 한다. 그러면서 오름차순으로 1~8까지 stack에 쌓아야 하는데 push는 어느 때에나 해도 상관없지만 pop은 반드시 저 수열에 맞춰 pop을 해야.. 2023. 4. 18.
백준 에디터 (1406번) c++ 문제 https://www.acmicpc.net/problem/1406 1406번: 에디터 첫째 줄에는 초기에 편집기에 입력되어 있는 문자열이 주어진다. 이 문자열은 길이가 N이고, 영어 소문자로만 이루어져 있으며, 길이는 100,000을 넘지 않는다. 둘째 줄에는 입력할 명령어의 개수 www.acmicpc.net 문제 풀이 처음 문제를 보고 나는 vector로 풀까 하고 생각을 했다. 하지만 시간 제한이 0.3초 인걸 확인하고 vector.erase와 vector.insert가 시간초과에 걸릴거 같아 연결리스트로 생각을 바꿨다. vector로 구현한 소스이다. #include #include #include using namespace std; int main(){ ios_base::sync_with_.. 2023. 4. 18.
백준 9012번(괄호) 문제 https://www.acmicpc.net/problem/9012 9012번: 괄호 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 www.acmicpc.net 문제 풀이 스택 개념을 이용하여 풀면 된다. 나는 여기서 스택을 이용하진 않고 단순히 result 변수를 통해 숫자를 세어줌으로써 해결하였다. 전체 코드 #include using namespace std; int main(){ ios_base::sync_with_stdio(false); cin.tie(0); int N; cin >> N; for(register.. 2023. 4. 17.
백준 9093번 (단어 뒤집기) 문제 https://www.acmicpc.net/problem/9093 문제 풀이 이 문제는 스택을 사용하여 푸는 문제이다. 하지만 입출력 또한 중요한 문제이다. string 변수와 cin을 통해 'I am happy today'를 받으려고 하면 'I'만을 저장하게 된다. 왜냐하면 공백을 만나면 문자열의 끝으로 인식하여 'I' 만을 저장하게 된다. 그래서 다른 방법이 필요하다. 바로 getline을 이용하는 것이다. getline은 두가지 종류가 존재한다. istream라이브러리의 cin.getline(), string 라이브러리의 istream& getline()이 존재한다. cin.getline cin.getline (char* s, streamsize n, char delim); 첫번째 인자는 ch.. 2023. 4. 17.