Deep Learning through deep learning

백준 10813 공 바꾸기 본문

Baekjoon_algorithm_heuristic

백준 10813 공 바꾸기

NeuroN 2023. 2. 17. 10:28

https://www.acmicpc.net/

 

Baekjoon Online Judge

Baekjoon Online Judge 프로그래밍 문제를 풀고 온라인으로 채점받을 수 있는 곳입니다.

www.acmicpc.net

[문제 해석]

더보기

1~N까지의 번호가 있는 공이 각 번호에 맞게 위치해있고, 이 위치를 2개씩 바꾸는걸 반복하는 문제이다.

공 개수 N이 주어지고, 공 위치를 바꿀 횟수 M이 주어진다.
두번째 줄부터는 두 공의 위치가 입력되면 각 위치에 있는 공을 서로 바꾸면 된다.
주의할점은 공의 위치가 주어지는것이지 공의 번호가 주어지는것이 아니다.
k라는 벡터를 만들어 0번 인덱스부터 N번 인덱스까지 각 인덱스 숫자를 값으로 할당한다. (1번째는 숫자 1이 있겠지)
다음 for문에서는 M번을 반복하며 공의 위치를 바꿀건데, a,b라는 변수에 각각 숫자을 입력받아 k[a],k[b]의 위치를 바꿔준다. (k[a],k[b]인덱스가 공의 위치와 같음)
배열,벡터의 두 원소의 위치를 바꾸는 함수로 swap함수를 사용한다.
출력으로는 " "공백을 포함해서 배열을 for문을 통해 출력해준다.

[정답 코드]

#include <iostream>
#include <math.h>
#include <algorithm>
#include <vector>
#include <string>
using namespace std;

int main()
{
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);

	int N, M; cin >> N >> M;
	vector<int> k;
	int a, b;

	for (int i = 0; i <= N; i++)
	{
		k.push_back(i);
	}

	for (int i = 0; i < M; i++)
	{
		cin >> a >> b;

		swap(k[a], k[b]);
	}

	for (int i = 1; i <= N; i++)
	{
		cout << k[i] << " ";
	}
}

'Baekjoon_algorithm_heuristic' 카테고리의 다른 글

백준 2164 카드2 큐가 아닌 벡터로 구현  (0) 2023.02.20
백준 1568 새  (0) 2023.02.17
백준 1453 피시방 알바  (0) 2023.02.17
백준 2441 별 찍기 - 4  (0) 2023.02.17
백준 7567번 그릇  (0) 2023.02.08