전체 코드
#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값 순서대로 입력받음
- 공을 서로 바꿈 : 임시 변수 tmp에 i번째값 저장->i번째 바구니 공을 j번째 공으로 갱신->j번째 바구니는 tmp에 미리 저장한 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] << " ";
}