백준 10813) 랠리

전체 코드

#include <iostream>

int main()
{
	int arr(100);
	int N, M, i, j, tmp;

	std::cin >> N >> M;
	
	for (int count = 0; count < 100; count++)
	{
		arr(count) = count + 1;
	}

	for (int count = 0; count < M; count++)
	{
		std::cin >> i >> j;
		tmp = arr(i - 1);
		arr(i - 1) = arr(j - 1);
		arr(j - 1) = tmp;
	}

	for (int count = 0; count < N; count++)
	{
		std::cout << arr(count) << " ";
	}

}

설명

  • 최대 100개의 바구니가 있으므로 크기가 100인 배열을 선언합니다.
  • 바구니에 같은 번호의 공이 있으므로 적절한 인덱스에 count+1을 저장합니다.
    인덱스는 0에서 시작하고 순서는 1에서 시작하므로 count+1이 저장됩니다.
int arr(100);
//중간생략
for (int count = 0; count < 100; count++)
{
	arr(count) = count + 1;
}
  • M만큼 반복되는 루프
  • i, j 값을 순서대로 입력
  • 공 교체: i번째 값을 임시 변수 tmp에 저장 -> i번째 바구니에 있는 공을 j번째 공으로 업데이트 -> j번째 바구니를 이전에 tmp Ball에 저장된 i번째로 업데이트( i번째 바스켓은 이전 사람 의 값이 손실되었기 때문에 이전에 tmp로 복원된 값을 대신 씁니다)
  • 위에서 설명한 것처럼 순서는 1이고 인덱스는 0부터 시작하므로 인덱스 부분에 -1 값을 할당합니다.
for (int count = 0; count < M; count++)
{
	std::cin >> i >> j;
	tmp = arr(i - 1);
	arr(i - 1) = arr(j - 1);
	arr(j - 1) = tmp;
}
  • N(바구니 수)만큼 반복되는 루프
  • 인덱스 값에 해당하는 배열 값을 반환합니다.
for (int count = 0; count < N; count++)
{
	std::cout << arr(count) << " ";
}