본문 바로가기
백준 알고리즘

[백준][C++] 10813번 : 공 바꾸기

by 탱글한푸딩 2023. 7. 17.
반응형

문제

https://www.acmicpc.net/problem/10813

 

10813번: 공 바꾸기

도현이는 바구니를 총 N개 가지고 있고, 각각의 바구니에는 1번부터 N번까지 번호가 매겨져 있다. 바구니에는 공이 1개씩 들어있고, 처음에는 바구니에 적혀있는 번호와 같은 번호가 적힌 공이

www.acmicpc.net


코드

#include <iostream>
using namespace std;

int main()
{
	int N, M;
	int i, j;
	int temp = 0;

	cin >> N >> M;

	int* arr = new int[N];

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

	for (int x = 0; x < M; x++)
	{
		cin >> i >> j;

		temp = arr[i - 1];
		arr[i - 1] = arr[j - 1];
		arr[j - 1] = temp;
	}

	for (int x = 0; x < N; x++)
	{
		cout << arr[x] << " ";
	}
    
	delete[] arr;
	return 0;
}

풀이

int* arr = new int[N];	// 크기가 N인 arr배열을 동적으로 생성

delete[] arr;	// 메모리 누수를 방지하기 위해 할당된 메모리를 반환

 

※ 다른 풀이 ※

위의 코드에서 아래 코드들을 추가

#include <iostream>
#include <algorithm>
using namespace std;

 

for (int x = 0; x < M; x++)
	{
		cin >> i >> j;

		//temp = arr[i - 1];
		//arr[i - 1] = arr[j - 1];
		//arr[j - 1] = temp;
        
		swap(arr[i - 1], arr[j - 1]);
	}

<algorithm> 헤더파일의 swap(a,b) 함수를 통해 a와 b의 값을 쉽게 교환이 가능하다.

반응형