백준 - 10813번: 공 바꾸기

Lee·2023년 3월 17일
0

알고리즘

목록 보기
3/34
post-thumbnail

문제 출처

문제 출처 : 10813번: 공 바꾸기

문제 이해하기

  • 아마 앞서 풀었던 공 넣기를 이해했다면 이번 문제는 어렵지 않을겁니다.
  • 앞서 풀었던 공 넣기와는 다르게 1번부터 N번까지의 바구니에 적힌 번호와 같은 공이 1개씩 들어 있고, M번 공을 바꾸는 로직을 만들면 됩니다.
  • 배열에서 2개의 값을 뽑은 후 서로 swap할 수 있는지를 물어보는 문제입니다.

주요 조건 이해하기 ⭐️

  • 입력 부분에 자세한 설명이 나와있어서 별다른 설명 없이 바로 보겠습니다.

스켈레톤 코드

int N, M; // 입력받을 N, M에 대한 변수
int[] buckets; // N만큼의 크기를 가진 배열 

void swapBall(int start, int end) {
		int temp = buckets[start];
		buckets[start] = buckets[end];
		buckets[end] = temp;
	}

최종 소스 파일

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class BOJ_10813 {

	static int N, M;
	static int[] buckets;
	static StringBuilder sb = new StringBuilder();

	static void swapBall(int start, int end) {
		int temp = buckets[start];
		buckets[start] = buckets[end];
		buckets[end] = temp;
	}

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine(), " ");

		N = Integer.parseInt(st.nextToken());
		M = Integer.parseInt(st.nextToken());

		// 바구니 초기화
		buckets = new int[N + 1];
		for (int i = 1; i <= N; i++) {
			buckets[i] = i;
		}

		for (int i = 0; i < M; i++) {
			st = new StringTokenizer(br.readLine(), " ");

			int start = Integer.parseInt(st.nextToken());
			int end = Integer.parseInt(st.nextToken());

			swapBall(start, end);
		}
		printBallNumber();
	}

	static void printBallNumber() {
		for (int i = 1; i <= N; i++) {
			sb.append(buckets[i]).append(" ");
		}

		System.out.println(sb.toString());
	}

}

0개의 댓글