본문 바로가기
Baekjoon/[Code.plus] 알고리즘 기초 1/2

[BOJ/백준] 17413 단어 뒤집기 2

by 해적거북 2021. 7. 26.
728x90

● [문제번호 17413] 단어 뒤집기 2

https://www.acmicpc.net/problem/17413

 

17413번: 단어 뒤집기 2

문자열 S가 주어졌을 때, 이 문자열에서 단어만 뒤집으려고 한다. 먼저, 문자열 S는 아래와과 같은 규칙을 지킨다. 알파벳 소문자('a'-'z'), 숫자('0'-'9'), 공백(' '), 특수 문자('<', '>')로만 이루어져

www.acmicpc.net

 

● 알아야 할 것

: stack 자료구조와 메소드

 

● 풀이 과정

: 태그('<', '>') 내부 단어는 바로 출력하고

태그('<', '>') 외부 단어는 stack에 저장한다.

 

: stack에 저장한 단어를 출력하는 경우는

1. 반복문의 끝에 도달한 경우

2. '<'를 만난 경우

3. 태그 외부에서 공백을 만나는 경우

 

● 주의 할 것

: NULL

 

● 참고 할 것

: NULL

 

● 풀이 코드

#include <bits/stdc++.h>

using namespace std;

stack<char> s;
string str;

int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    
    getline(cin, str);
    
    for(int i = 0; i <= str.length(); i++)
    {
        // 반복문의 끝에 도달 시
        // stack에 있던 단어 출력
        if(i == str.length())
        {
            while(!s.empty())
            {
                cout << s.top();
                s.pop();
            }
        }
        // '<'를 만나면 '>'를 만날 때 까지 출력
        else if(str[i] == '<')
        {
            // stack에 있던 단어 출력
            while(!s.empty())
            {
                cout << s.top();
                s.pop();
            }
            // '>'를 만날 때 까지 출력
            while(str[i] != '>')
            {
                cout << str[i];
                i++;
            }
            // '>' 까지 출력
            cout << str[i];
        }
        // 태그('<', '>') 외부에 있는 공백을 만나는 경우
        // stack에 있는 단어 출력
        else if(str[i] == ' ')
        {
            while(!s.empty())
            {
                cout << s.top();
                s.pop();
            }
            cout << ' ';
        }
        // 태그('<', '>') 외부의 단어는 stack에 저장
        else
        {
            s.push(str[i]);
        }
    }
    
    
    return 0;
}

 

 

● [백준] - [알고리즘 기초 1/2] - [201 - 자료구조 1 (연습)] 문제집

번호 문제 번호 문제 이름 풀이 링크
1 17413 단어 뒤집기 2 https://pirateturtle.tistory.com/165
2 10799 쇠막대기 https://pirateturtle.tistory.com/166
3 17298 오큰수 https://pirateturtle.tistory.com/167
4 17299 오등큰수 https://pirateturtle.tistory.com/168

 

728x90

'Baekjoon > [Code.plus] 알고리즘 기초 1/2' 카테고리의 다른 글

[BOJ/백준] 17299 오등큰수  (0) 2021.07.26
[BOJ/백준] 17298 오큰수  (0) 2021.07.26
[BOJ/백준] 10799 쇠막대기  (0) 2021.07.26
[BOJ/백준] 10866 덱  (0) 2021.07.26
[BOJ/백준] 1158 요세푸스 문제  (0) 2021.07.26
[BOJ/백준] 10845 큐  (0) 2021.07.26
[BOJ/백준] 1406 에디터  (0) 2021.07.26

댓글