본문 바로가기
알고리즘/문제

[백준] 9093. 단어 뒤집기 <C++>

by 코드 이야기 2020. 6. 3.
728x90

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

 

9093번: 단어 뒤집기

문제 문장이 주어졌을 때, 단어를 모두 뒤집어서 출력하는 프로그램을 작성하시오. 단, 단어의 순서는 바꿀 수 없다. 단어는 영어 알파벳으로만 이루어져 있다. 입력 첫째 줄에 테스트 케이스의

www.acmicpc.net

 

처음엔 스택을 쓸까 했는데 굳이 코드만 길어지고 덜 효율적일 것 같아 배열만 이용하였다.

 

 

#include <iostream>
#include <string>
using namespace std;

int n, sw;
string str;

int main() {
  cin>>n;
  cin.ignore();  // 버퍼 무시
  for(int k=0; k<n; k++)
  {
    getline(cin, str);  //라인 입력
    for(int i=0; i<str.size(); i++)
    {
      if(str[i]==' ')  //공백이 있으면
      {
        for(int j=i-1; str[j]!=' ' && j>=0; j--)  //공백 뒤부터 거꾸로 읽으며 출력
          cout<<str[j];
        cout<<" ";
      }
    }
    
    for(int j=str.size()-1; str[j]!=' '&&j>=0; j--)  //마지막 단어 거꾸로 출력
      cout<<str[j];
    cout<<" \n";
  }
}

 

처음엔 마지막 단어를 거꾸로 출력해줄 반복문을 안적었다가 왜 마지막만 안되는거지..? 생각했는데 나는 바보였다...

마지막단어 뒤에는 공백이 없으니 if문에 안걸려서 출력이 안되지;;

728x90

댓글