Algorithm
[Java] 백준 10804번 : 카드 역배치
Woogie
2022. 2. 16. 00:30
1. 문제
https://www.acmicpc.net/problem/10804
10804번: 카드 역배치
1부터 20까지 오름차순으로 놓인 카드들에 대해, 입력으로 주어진 10개의 구간 순서대로 뒤집는 작업을 했을 때 마지막 카드들의 배치를 한 줄에 출력한다.
www.acmicpc.net
2. 풀이
- 문제에 카드 20장이라고 정해주었으므로 20칸을 가진 int형 배열을 만든다.
- 2개씩 10개의 입력이 주어진다. (인덱스와 맞추기 위해서 -1)
- 변수를 하나 만들어 주고 입력값을 서로 빼준다. (start변수가 end변수보다 숫자가 작으면 마이너스 숫자가 나올 수 있어 Math.abs() 음수를 양수로 바꾸어 주는 메소드를 활용하고, 나온 숫자만큼 자리 바꿔주기 위하여 나누기 2를 해주는게 핵심이다.
3. 코드
package baekjoon;
import java.util.Scanner;
public class Q10804 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int[] arr = new int[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20};
for (int i = 0; i < 10; i++) {
int start = scanner.nextInt() - 1;
int end = scanner.nextInt() - 1;
int num = (Math.abs(start - end + 1) / 2);
int count = 0;
for (int j = 0; j < num; j++) {
int tmp = arr[start + count];
arr[start + count] = arr[end - count];
arr[end - count] = tmp;
count++;
}
}
for (int b : arr) {
System.out.print(b + " ");
}
}
}