오늘 스택을 직접 구현해봤는데 마침 이 알고리즘에서 사용할수 있겠다 싶어서 스택을 사용해봤다.
스택 구현 코드는 길어서 빼겠다
int main()
{
int N;
scanf("%d ",&N);
Stack<char> stack;
vector<char> result;
result.reserve(INIT_STACK_SIZE);
char temp;
for (int i = 0; i < N; )
{
temp = getchar();
if (temp == '\n')
{
while (stack.IsEmpty() == false)
{
result.push_back(stack.Pop());
}
result.push_back('\n');
++i;
}
else if (temp == ' ')
{
while (stack.IsEmpty() == false)
{
result.push_back(stack.Pop());
}
result.push_back(' ');
}
else
{
stack.Push(temp);
}
}
for (const auto & data : result)
{
cout << data;
}
}
||사용 기법
- Stack
||풀면서 느낀 것
- 다른 방법도 많다
다른 사람들의 코드도 보았는데 strtok을 사용한게 꽤 인상에 깊었다.
문자열에 관한 문제일때 문자열을 다루는 함수를 같이 잘 생각해 봐야겠다.
||새로 알게 된것
- queue는 range based roop가 불가능하다!
큐와 범위 기반 반복문으로 결과값을 간단하게 뽑으려 했었는데 큐는 begin이 없어서 안되더라..!
좀 더 알아보니 컨테이너 어댑터는 불가능 했었는데 생각해보면
컨테이너를 제한시켜 그에 맞게 사용하는 모든 컨테이너 어댑터에 begin과 end가 있기에는 어렵다고 생각이 들었다.
어떻게 보면 당연했던 것~
- scanf의 문자열 입력 받기
이건 질문에 답변을 해주려 알아보다가 알게 된것인데
scanf의 문자열은 개행문자 뿐만아니라 공백문자도 끝으로 취급한다는 것
기본인데 몰랐던 내가 한심했다 =~=
'코딩 테스트 > 알고리즘 풀이' 카테고리의 다른 글
[백준 - 1202] 보석 도둑 (0) | 2022.08.01 |
---|---|
[백준 - 9012] 괄호 (0) | 2022.07.31 |
[백준 - 1080] 행렬 (0) | 2022.07.30 |
[백준 - 1715] 카드 정렬하기 (0) | 2022.07.28 |
[백준 - 2751] 수 정렬하기2 (0) | 2022.07.27 |