백준 단계별로 풀어보기(C++)/4)1차원 배열

백준 10811) 바구니 뒤집기 (C++)

코테 2023. 3. 13. 01:31

전체 코드

#include <iostream>

int main()
{
	int arr[101];
	int N, M, i, j, tmp, start, end;
	std::cin >> N >> M;

	for (int i = 1; i <= N; i++)
	{
		arr[i] = i;
	}

	for (int count1 = 0; count1 < M; count1++)
	{
		std::cin >> i >> j;
		start = i;
		end = j;
		for (int count2 = 0; count2 < (j-i+1)/2; count2++)
		{
			tmp = arr[start];
			arr[start] = arr[end];
			arr[end] = tmp;
			start++;
			end--;
		}
	}

	for (int i = 1; i <= N; i++)
	{
		std::cout << arr[i] << " ";
	}
}

풀이

  • 인덱스101선언 : 인덱스를 100으로 설정한다면 0부터 99까지만 이용 가능하므로 101로 선언함-> 1부터 100까지의 인덱스를 사용할 예정
int arr[101];
  • 1부터 N번까지 본인의 인덱스값을 값으로 입력함
for (int i = 1; i <= N; i++)
{
	arr[i] = i;
}
  • 첫번째 반복문 : M번 반복하는 반복문
  • i와 j를 입력받은뒤 각각 처음과 마지막으로 지정
  • 두번째 반복문 : 입력받은 바구니의 개수에 2를 나눈 값만큼 반복함
  • 두번째 반복문에 대한 것은 밑의 사진 참조
for (int count1 = 0; count1 < M; count1++)
{
	std::cin >> i >> j;
	start = i;
	end = j;
	for (int count2 = 0; count2 < (j-i+1)/2; count2++)
	{
		tmp = arr[start];
		arr[start] = arr[end];
		arr[end] = tmp;
		start++;
		end--;
	}
}

반복문 첫번째 과정
반복문 두번째 과정