(백준BAEKJOOB )- 9093번 -단어 뒤집기 "c++"
2023. 3. 5. 20:37ㆍ언어/c, c++
728x90
스택을 이용하여 문제를 풀었다.
먼저
cin.ignore(); //버퍼 비우기
// sentence[i] 연산자 오버로딩
이 내용은 내가 알지 못하여서 인터넷으로 찾아봤다.
while (T--) //t -- 까지 결국 인덱스 뺴고 t만큼 반복
{
}
t만큼 반복하기 위해서
그리고 앞으로 문자열을 띄어쓰기해서 받기위해선 이런식으로 접근 하여야겠다.
getline(cin, sentence); //따로 입력받기 위해서
sentence += ' '; // l am 을 입력받으면 l따로 am따로 저장되기떄문에 한줄로 다모아준다
스택에 넣고 빼서 출력하는 부분
for (int i = 0; i < sentence.size(); i++)
{
if (sentence[i] == ' ') //만약에 인덱스 중 띄어쓰기가 있고
{
while (!st.empty()) //스택이 비었으면 반복
{
cout << st.top(); //제일 위에있는걸 출력하고
st.pop(); //삭제한다.
}cout << ' '; //그리고 띄어쓰기
}
else
st.push(sentence[i]); //만약에 인덱스중에 띄어쓰기가 없다면
//내가 적은 단어를 push
총 코드
#include<iostream>
#include<string>
#include<stack>
using namespace std;
int main()
{
int T; //테스트 케이스
string sentence; //문장 (길이 최대 1000) 단어길이: 20
stack <char> st; //단어를 뒤집기 위한 스택
cin >> T;
cin.ignore(); //버퍼 비우기
while (T--) //t -- 까지 결국 인덱스 뺴고 t만큼 반복
{
getline(cin, sentence); //따로 입력받기 위해서
sentence += ' '; // l am 을 입력받으면 l따로 am따로 저장되기떄문에 한줄로 다모아준다
for (int i = 0; i < sentence.size(); i++)
{
if (sentence[i] == ' ') //만약에 인덱스 중 띄어쓰기가 있고
{
while (!st.empty()) //스택이 비었으면 반복
{
cout << st.top(); //제일 위에있는걸 출력하고
st.pop(); //삭제한다.
}cout << ' '; //그리고 띄어쓰기
}
else
st.push(sentence[i]); //만약에 인덱스중에 띄어쓰기가 없다면
//내가 적은 단어를 push
}cout << "\n";
}
}
728x90
'언어 > c, c++' 카테고리의 다른 글
(백준BAEKJOOB )- 9012번 -괄호 "c++" (0) | 2023.03.07 |
---|---|
(백준BAEKJOOB )- 5622번 -다이얼 "c++" (0) | 2023.03.06 |
(백준BAEKJOOB )- 2292번 -벌집 "c++" (1) | 2023.03.03 |
(백준BAEKJOOB )- 1463번 -1로 만들기 "c++" (0) | 2023.03.01 |
(백준BAEKJOOB )- 9076번- 점수 집계 "c++" (0) | 2023.02.28 |