백준 10813번: 공 바꾸기 / C++ 문제풀이

Been·2023년 11월 12일
0

백준

목록 보기
13/23
post-thumbnail

한 줄 요약 :

서로 바꾸고자 하는 배열의 값을 제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] << " ";
	}
}
profile
콧콧코코콧코콧ㅅ

0개의 댓글