한 줄 요약 :
서로 바꾸고자 하는 배열의 값을 제3 변수에 담아 전달한다.
풀이 :
1. 정수 N, M의 값을 각각 입력받는다.
N은 바구니의 개수, M은 바구니의 공을 바꾸는 시도의 횟수다.
int N, M; cin >> N >> M;
2. 바구니의 값을 담을 배열을 입력한다.
각각의 바구니는 1부터 N까지 순서대로 놓여있고 그 순서대로 적힌 공을 하나씩 들고있다.
int Basket[100]; for (int a = 1; a <= N; a++) { Basket[a] = a; //1부터 N까지의 값이 배열에 순서대로 들어갈 것이다. }
3. M번 반복하는 for문을 통해 값을 서로 바꿀 바구니의 값을 입력받는다.
for (int a = 1; a <= M; a++) { int i, j; //Basket[i]와 Basket[j]의 값이 서로 바뀔 것이다. cin >> i >> j;
4. int change 변수를 만들어 i와 j바구니의 값을 바꿔준다.
만약 i 바구니를 곧바로 j바구니값으로 변경한다면, j바구니에 넣을 i바구니값이 사라지기 때문에 제3 변수를 만들어 i바구니 값을 미리 저장해놓는다.
int change = Basket[i]; Basket[i] = Basket[j]; Basket[j] = change; } // M번 반복하는 for문 종료
5. N번까지의 바구니의 값을 출력한다.
for (int a = 1 ; a <= N; a++) { cout << Basket[a] << " "; }
<C++ code>
#include <iostream>
using namespace std;
int main()
{
int N, M;
cin >> N >> M;
int Basket[100];
for (int a = 1; a <= N; a++)
{
Basket[a] = a;
}
for (int a = 1; a <= M; a++)
{
int i, j;
cin >> i >> j;
int change = Basket[i];
Basket[i] = Basket[j];
Basket[j] = change;
}
for (int a = 1 ; a <= N; a++)
{
cout << Basket[a] << " ";
}
}