백준 10813번 공 바꾸기(java)

마뇽미뇽·2024년 5월 1일
0

알고리즘 문제풀이

목록 보기
38/165

1.문제

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

2.풀이

배열 안에 수를 바꿀 땐 임시의 변수를 생성한 후 반복문 안에서 주소를 준다.
arr[a] = arr[b]가 아닌
temp = arr[a]
arr[a] = arr[b]
arr[b] = temp로 사용해야한다.

3.코드

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

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

        int n = Integer.parseInt(st.nextToken());
        int m = Integer.parseInt(st.nextToken());
        int temp;

        int arr[] = new int [n];

        for(int i = 0; i < arr.length; i++){
            arr[i] = i+1;
        }

        for(int a = 0; a < m; a++){
            st = new StringTokenizer(br.readLine());
            int i = Integer.parseInt(st.nextToken());
            int j = Integer.parseInt(st.nextToken());

            temp = arr[i - 1];
            arr[i - 1] = arr[j - 1];
            arr[j - 1] = temp;
            
        }

        for(int i = 0; i < n; i++){
            bw.write(arr[i] + " ");
        }

        br.close();
        bw.flush();
        bw.close();
    }
}

4. 후기

배열의 크기를 i와 j로만 해서 값이 변하지 않아 시간이 오래걸렸다.

profile
Que sera, sera

0개의 댓글