반응형
문제
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의 값을 쉽게 교환이 가능하다.
반응형
'백준 알고리즘' 카테고리의 다른 글
[백준][C++] 3052번 : 나머지 (0) | 2023.07.19 |
---|---|
[백준][C++] 5597번 : 과제 안 내신 분..? (0) | 2023.07.18 |
[백준][C++] 10810번 : 공 넣기 (0) | 2023.07.16 |
[백준][C++] 2562번 : 최댓값 (0) | 2023.07.15 |
[백준][C++] 10818번 : 최소, 최대 (0) | 2023.07.14 |