이번 문제는 입력한 범위에 따른 배열의 범위를 뒤집어야 하는 문제이다,
요즘 드는 생각이 BufferedReader은 문자열로만 읽어오기 때문에, 공백 구분으로 입력해야할 때나, 형변환이 필요할 때는 정말 쓸데없이 코드가 길어지는거 같다..
앞으론 적절히 Scanner를 사용해야겠다는 생각이 들었다.
어쨌든 내가 작성한 코드는 아래와 같다.
문제의 조건은 첫번째 줄에 바구니의 개수 N 과, 바구니를 바꿀 횟수 M이 주어진다.
따라서 첫줄에 N과 M을 입력 받았고, 각 바구니의 요소를 바구니의 번째수와 동일하게 초기화 하였다.
그리고 M번 만큼 반복을 진행하는데, 반복될 때 마다, i와j 값을 받아야 하므로 반복문 내에 선언하였다.
마지막으로 바구니를 뒤집어야 하는데
바구니가 만약 5개라면 1-5, 2-4, 3-3 (4-2)
바구니가 만약 6개라면 1-6, 2-5, 3-4 (4-3)
괄호에 있는 바구니가 바뀌면 안되기 때문에, f가 u보다 작을때만 반복하도록 하였다.
import java.io.*;
import java.util.StringTokenizer;
public class BigInteger {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine()," ");
int N = Integer.valueOf(st.nextToken());
int M = Integer.valueOf(st.nextToken());
int[] bucket = new int[N];
for(int i = 0; i < bucket.length; i++)
bucket[i] = i+1;
for(int k = 0; k < M; k++) {
StringTokenizer st2 = new StringTokenizer(br.readLine(), " ");
int i = Integer.valueOf(st2.nextToken());
int j = Integer.valueOf(st2.nextToken());
for(int f = i-1, u = j-1; f < u; f++,u--) {
int tmp = bucket[f];
bucket[f] = bucket[u];
bucket[u] = tmp;
}
}
for(int num : bucket)
System.out.print(num + " ");
}
}
'알고리즘 분류 > Step4 1차원 배열' 카테고리의 다른 글
</Step4_10> 1546 평균 JAVA (0) | 2023.03.26 |
---|---|
</Step4_8> 3052 나머지 JAVA (0) | 2023.03.23 |
</Step4_7> 5597 과제 안 내신 분..? JAVA (0) | 2023.03.22 |
</Step4_6> 10813 공 바꾸기 JAVA (0) | 2023.03.20 |
</Step4_5> 10810 공 넣기 JAVA (0) | 2023.03.19 |