[BOJ] 1406 "에디터" 문제 풀이 & 소스 코드 with C/C++
·
Archive/ProblemSolving
#INFO 난이도 : SILVER3 알고리즘 유형 : STACK(스택) ∞ 문제 출처 : https://www.acmicpc.net/problem/1406 #SOLVE 입력받은 문자열을 커서를 기준으로 leftStack , rightStack 2개의 스택을 이용해 저장한다. 예를들어 abcdef 문자열을 입력 받았다고 가정하면 우선 abcdef 모든 문자열을 leftStack에 저장한다. 커서를 왼쪽으로 옮기는 L 명령을 입력 받으면, leftStack의 가장 위에 있는 원소인 f를 pop()하고, rightStack에 push()한다. 그러면 결과적으로, abcde | f 인 상태가 된다. 이 처럼 커서를 기준으로 스택을 2개 활용하면, R/B/P 기능도 간단하게 구현이 가능하다. #CODE #incl..
[BOJ] 9093 "단어 뒤집기" 문제 풀이 & 소스 코드 with C/C++
·
Archive/ProblemSolving
#INFO 난이도 : BRONZE1 알고리즘 유형 : STACK(스택) ∝문제 출처 : https://www.acmicpc.net/problem/9093 #SOLVE 스택 자료구조를 이용해 풀이 하였다. getline() 함수를 이용해서 모든 문자열을 받아들인 후 , 반복문을 돌려서 공백을 만나기 전까지 문자를 스택에 쌓고, 공백을 만나면 가장 위에 있는 단어부터 스택을 pop 한다. 이렇게 하면 각 단어들이 뒤집어 출력되게 된다. 하지만 이 방식에는 한 가지 문제점이 존재한다. 공백을 만날 때 스택을 하나 씩 꺼내게 되면 마지막 문자열(GH)는 출력을 못하게 된다. 따라서, 입력받은 문자열에 '/n' 문자를 추가해 준 뒤, 공백 또는 '/n'을 만날 때 스택을 하나 씩 꺼내게 해 주면 모든 문자를 뒤집..