크래프톤 정글/정글에서 문제풀기

스택·큐 Q3. 스택 원소가 쌍별 연속인지 확인하기

cedis 2026. 4. 9. 10:21
자료구조 C 실습 · 스택과 큐 · Q3
스택·큐 Q3. 스택 원소가 쌍별 연속인지 확인하기
C 파일 하나를 문제 하나로 보고 정리한 풀이 글이다.
이번 글은 함수가 실제로 어떤 연결, 순회, 변환을 수행하는지에 초점을 맞춘다.
Section C Stack and Queue isStackPairwiseConsecutive

스택에서 두 개씩 pop했을 때 각 쌍의 차이가 1인지 검사하는 문제다. 핵심 로직은 단순하지만, 자료구조 상태를 직접 소모한다는 점이 중요하다. 스택을 확인하는 과정이 곧 스택을 비우는 과정이 되기 때문이다.

한눈에 보는 문제 정보
원본 파일: C:\Users\cedis\OneDrive\문서\ANTIWORK\WEKK6~~~~~\data_structures_docker\Data-Structures\Stack_and_Queue\Q3_C_SQ.c
대상 함수: isStackPairwiseConsecutive
카테고리: 스택과 큐

문제에서 요구한 것

메뉴와 출력 문자열을 보면 이 파일은 특정 자료구조 연산 하나를 직접 구현하도록 만든 실습 문제다. 입력 흐름은 아래처럼 정리할 수 있다.

  • 1: Insert an integer into the stack
  • 2: Check the stack is pairwise consecutive
  • 0: Quit
  • Input an integer that you want to insert into the stack
  • The stack is
  • The stack is pairwise consecutive.

핵심 구현 흐름

STEP 1
스택 크기가 홀수면 바로 실패 처리한다.
STEP 2
두 개씩 pop해서 절댓값 차이가 1인지 검사한다.
STEP 3
중간에 하나라도 조건이 깨지면 즉시 종료한다.

핵심 코드

문제 파일 전체를 다 옮기기보다, 실제로 구현해야 했던 함수만 뽑아서 보면 로직이 더 선명하게 들어온다.

핵심 코드: isStackPairwiseConsecutive
int isStackPairwiseConsecutive(Stack *s)
{

    int count = s->ll.size;



	if (count %2 != 0)
	{
		return 0;
	}

	while (!isEmptyStack(s))
	{
    	int first = pop(s);
    	int second = pop(s);
		if( abs(first-second) !=1)
		{
			return 0;
		}


	}
	return 1;

}

구현할 때 체크할 점

  • 검사 후 원래 스택 상태를 유지해야 하는 문제인지 먼저 확인해야 한다.
  • pairwise 조건을 볼 때 `abs(a-b) == 1`인지, 단순히 `a+1 == b`인지 차이를 놓치기 쉽다.

마무리

이 문제는 거대한 알고리즘을 묻는 문제라기보다, 자료구조를 실제 포인터 연결과 순회 흐름으로 이해하고 있는지 확인하는 실습에 가깝다. 핵심 로직은 단순하지만, 자료구조 상태를 직접 소모한다는 점이 중요하다. 스택을 확인하는 과정이 곧 스택을 비우는 과정이 되기 때문이다.

같은 카테고리의 다른 문제와 함께 보면, 연결 리스트에서는 재배선, 스택과 큐에서는 순서 제어, 트리에서는 재귀 순회라는 감각이 반복해서 나온다는 점도 같이 볼 수 있다.