300x250
https://www.acmicpc.net/problem/10813
문제
분석
첫째 줄에 N과 M 이 주어진다.
둘째 줄부터 M개의 줄에 걸쳐서 공을 교환할 방법을 주어짐, i, j 로 입력받음
i 번 바구니와 j 번 바구니에 들어있는 공을 서로 교환한다.
두개의 값이 들어올 때마다 배열에 들고 있는 값들을 교환시킨다.
풀이
import java.util.Scanner;
public class Main {
public static void main(String[] args) throws IOException{
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int arr[] = new int[N];
int M = sc.nextInt();
int temp;
for(int i = 0; i < arr.length; i++) {
arr[i] = i + 1; // 배열의 index 는 0 부터 시작 [0,1,2,3,4,5]
} // 첫번째는 0 이지만 첫번째 바구니 이기때문에 1부터 시작이니 +1 해줌
for(int j = 0; j < M; j++) {
int I = sc.nextInt();
int J = sc.nextInt();
temp = arr[I-1];
arr[I-1] = arr[J-1];
arr[J-1] = temp;
}
for(int k = 0; k <arr.length; k++) {
System.out.print(arr[k] + " ");
}
}
}
Scanner 를 이용한 문제 풀이입니다.
자바에서 temp라고 하는 건, 임시 저장 공간 변수 칭합니다.
temp라는 빈 공간의 변수에 arr[I - 1] 값을 넣어주고
arr[I - 1] 이 빈 공간이 됐을 때 그자리에 arr[J - 1] 값을 넣어 주고
arr[J - 1] 이 빈공간이 됬을때 temp 값을 넣어줍니다.
순서를 바꾼다고 생각하시면 됩니다.
정보처리기사에 알고리즘 문제에도 나왔던 것으로 기억나네요~
풀이 2
import java.io.*;
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 arr[] = new int[N];
int M = Integer.parseInt(st.nextToken());
int temp;
for(int i = 0; i < arr.length; i++) {
arr[i] = i + 1; // 배열의 index 는 0 부터 시작 [0,1,2,3,4,5]
} // 첫번째는 0 이지만 첫번째 바구니 이기때문에 1부터 시작이니 +1 해줌
for(int j = 0; j < M; j++) {
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 k = 0; k <arr.length; k++) {
bw.write(arr[k] + " ");
}
br.close();
bw.flush();
bw.close();
}
}
BufferedReader를 이용한 문제 풀이입니다.
Scanner 보다 시간적 면이나 메모리 면에서 성능이 더 좋은 것 같습니다.
BufferedReader, BufferedWrite에 대해 궁금하시면
참고하시면 됩니다.
300x250
'Progamming > BAEK JOON > 백준의 알고리즘' 카테고리의 다른 글
[백준] 10810번 : 공 넣기 - JAVA 문제 (0) | 2023.03.09 |
---|---|
[백준] 2562번 : 최댓값 - JAVA (0) | 2023.03.07 |
[백준] 10818번 : 최소, 최대 - JAVA (0) | 2023.03.07 |
[백준] 10871번 : X보다 작은 수 - JAVA 배열 (0) | 2023.03.07 |
[백준] 10807번 : 개수 세기 - JAVA 배열 (0) | 2023.03.06 |