본문 바로가기
알고리즘/백준 문제 풀이

[BOJ/백준] 10813번 공 바꾸기 - [c/c++] 풀이

by 미니상미니 2023. 3. 31.
반응형

https://www.acmicpc.net/problem/10813

 

10813번: 공 바꾸기

도현이는 바구니를 총 N개 가지고 있고, 각각의 바구니에는 1번부터 N번까지 번호가 매겨져 있다. 바구니에는 공이 1개씩 들어있고, 처음에는 바구니에 적혀있는 번호와 같은 번호가 적힌 공이

www.acmicpc.net

 

 

 

 


  • 문제


해설

1번 ~ n번까지의 바구니가 존재하며 각 바구니에는 해당하는 숫자가 들어가있다.

m줄에 걸쳐 a, b를 입력 받은 후 a번 바구니와 b번 바구니에 들어있는 숫자를 바꾼 후 n개의 바구니를 출력하는 문제다

 

n번까지의 바구니에 각 바구니에 해당하는 숫자로 초기화를 해준 후

swap 메소드를 사용하여 바구니 안의 번호를 바꾼 후 출력을 해주었다

 

코드에서 정의한 swap 함수를 설명하자면

변수에 새로운 값을 대입하면 기존의 값은 사라지므로,

기존 값을 저장할 temp에 기존 값을 저장한 후,

a 인덱스에다가 b 인덱스 값을 대입한 후
b 인덱스에 a 인덱스의 기존 값인 temp를 대입한다.

 

코드

c

#include <stdio.h>

int n, m;
int arr[101] = { 0, };
int a, b;

void swap(int idx1, int idx2) {
  int temp = arr[idx1];
  arr[idx1] = arr[idx2];
  arr[idx2] = temp;
}


int main() {
  scanf("%d %d", &n, &m);

  for(int i = 1; i <= n; i++) {
    arr[i] = i;
  }

  for(int i = 0; i < m; i++) {
    scanf("%d %d", &a, &b);
    swap(a, b);
  }

  for(int i = 1; i <= n; i++) {
    printf("%d ", arr[i]);
  }

  return 0;
}

 

c++

#include <iostream>

using namespace std;

int n, m;
int arr[101] = { 0, };
int a, b;

void swap(int idx1, int idx2) {
  int temp = arr[idx1];
  arr[idx1] = arr[idx2];
  arr[idx2] = temp;
}

int main() {
  cin >> n >> m;

  for(int i = 1; i <= n; i++) {
    arr[i] = i;
  }

  for(int i = 0; i < m; i++) {
    cin >> a >> b;
    swap(a, b); 
  }

  for(int i = 1; i <= n; i++) {
    cout << arr[i] << ' ';
  }

  return 0;
}

 

 

 

 

 

반응형

댓글