카드 역배치

문제 링크

카드 역배치

분석

1부터 20까지의 카드가 순서대로 놓여있는 상태로 시작합니다.

입력으로 구간 a부터 b까지 주어지는데, 해당 구간의 순서를 뒤집어주어야 합니다.
해당 과정이 총 10번 이루어집니다.

결과는 카드들의 배치를 출력하면 됩니다.

풀이

#include <iostream>

// 카드 배열
int NumberList[20] = { 0 };

// 시작 인덱스부터 끝 인덱스까지 뒤집어주는 함수
void Reverse(int StartIndex, int EndIndex)
{
    int ReverseCount = (EndIndex - StartIndex);

    while (true)
    {
        int temp = NumberList[StartIndex];

        NumberList[StartIndex] = NumberList[EndIndex];
        NumberList[EndIndex] = temp;

        ++StartIndex;
        --EndIndex;

        if (StartIndex >= EndIndex)
        {
            return;
        }
    }
}

int main()
{
	// 카드 배열 초기화
    for (int i = 0; i < 20; ++i)
    {
        NumberList[i] = i + 1;
    }

	// 입력을 받고, 해당 값으로 배열을 뒤집는 반복문
    for (int i = 0; i < 10; ++i)
    {
        int StartNumber, EndNumber;

        std::cin >> StartNumber >> EndNumber;

        Reverse(StartNumber - 1, EndNumber - 1);
    }

	// 출력
    for (int i = 0; i < 20; ++i)
    {
        if (i != 0)
        {
            std::cout << " ";
        }

        std::cout << NumberList[i];
    }
    
    return 0;
}

성능 요약

시간 복잡도는 상수 시간에 끝나기 때문에 $O(1)$입니다.

공간 복잡도는 고정된 크기의 상수 공간을 사용하기 때문에 $O(1)$입니다.

메모리: 2020 KB

시간: 0 ms

Date:     Updated:

카테고리:

태그:

Baekjoon 카테고리 내 다른 글 보러가기

댓글남기기