오늘 스택을 직접 구현해봤는데 마침 이 알고리즘에서 사용할수 있겠다 싶어서 스택을 사용해봤다.

스택 구현 코드는 길어서 빼겠다

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

+ Recent posts