일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- UNIX
- 이진 탐색
- 기초
- format 메서드
- MiniHeap
- type 함수
- 배열
- sys.stdin.readline()
- Git
- 순차 탐색
- 파이썬
- 문법
- 자기개발
- 정렬
- 재귀 함수
- IT
- NQueen
- git hub
- 우분투
- 유닉스
- 백준
- 스택
- 알고리즘
- 분할 정복
- 자료구조
- 탐색
- 트리
- 동적 계획
- 그리디
- 그래프
Archives
- Today
- Total
코딩고치
[백준][자료구조]단어 뒤집기 본문
이 문제는 태그(< >)안에 들어있는 문자열은 그대로 출력하고 태그 밖의 문자는 뒤집어서 출력하는 프로그램을 만드는 문제이다. 이 문제를 풀 때 태그 안의 문자는 큐를 이용하여 입출력을 하였고 태그 밖의 문자는 스택을 이용하여 입출력하도록 코드를 작성하였다.
#include <iostream>
#include <string>
#include <stack>
#include <queue>
using namespace std;
void reverse(stack<char> &s)
{
while (!s.empty())
{
cout << s.top();
s.pop();
}
}
int main(void)
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
string str;
getline(cin, str);
str += '\n';
stack<char> s;
queue<char> q;
for (int i = 0; i < (int)str.length(); i++)
{
if (str[i] == '<')
{
reverse(s);
while (str[i] != '>')
{
q.push(str[i]);
i++;
}
while (!q.empty())
{
cout << q.front();
q.pop();
}
cout << str[i];
}
else
{
if (str[i] == ' ' || str[i] == '\n')
{
reverse(s);
cout << str[i];
}
else
s.push(str[i]);
}
}
cout << '\n';
return 0;
}
작성하고 보니 굳이 큐를 쓰지 않아도 됐을 것 같은 생각이 든다.
'백준 알고리즘 기초 > 자료구조' 카테고리의 다른 글
[백준][자료구조]오큰수 (0) | 2019.09.08 |
---|---|
[백준][자료구조]쇠막대기 (0) | 2019.09.06 |
[백준][자료구조]덱 (0) | 2019.09.05 |
[백준][자료구조]조세퍼스 문제 (0) | 2019.09.05 |
[백준][자료구조]큐 (0) | 2019.09.05 |
Comments