충분히 쌓여가는
백준[Java] 10811번 바구니 뒤집기 본문
https://www.acmicpc.net/problem/10811
문제풀이 1
import java.util.Scanner;
public class _10811_1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int M = sc.nextInt();
int[] arr = new int[N];
for (int i = 0; i < N; i++) {
arr[i] = i + 1; // 배열은 0부터 시작하기 떄문에 arr[0]에 1을 넣기 위해 1을 더해줌
}
for (int i = 0; i < M; i++) { // M개의 줄
int left = sc.nextInt() - 1; // 배열 0부터 시작
int right = sc.nextInt() - 1;
while (left < right) {
int temp = arr[left];
arr[left++] = arr[right];
arr[right--] = temp;
}
}
sc.close();
for (int baguni:arr)
System.out.print(baguni + " ");
}
}
문제풀이 2
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class _10811_2 {
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.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
int[] arr = new int[N];
for (int i = 0; i < N; i++) {
arr[i] = i + 1; // 배열은 0부터 시작하기 떄문에 arr[0]에 1을 넣기 위해 1을 더해줌
}
for (int i = 0; i < M; i++) { // M개의 줄
st = new StringTokenizer(br.readLine(), " ");
int left = Integer.parseInt(st.nextToken()) - 1; // 배열 0부터 시작
int right = Integer.parseInt(st.nextToken()) - 1; // 배열 0부터 시작
while (left < right) {
int temp = arr[left];
arr[left++] = arr[right];
arr[right--] = temp;
}
}
br.close();
for (int baguni:arr)
System.out.print(baguni + " ");
}
}
문제풀이3(백준에서 틀렸다고 나옴)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class _10811_3 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
int N = str.charAt(0)-'0';
int M = str.charAt(2)-'0';
int[] arr = new int[N];
for (int i = 0; i < N; i++) {
arr[i] = i + 1; // 배열은 0부터 시작하기 때문에 arr[0]에 1을 넣기 위해 1을 더해줌
}
for (int i = 0; i < M; i++) { // M개의 줄
str = br.readLine();
int left = str.charAt(0)-49; // 배열 0부터 시작
int right = str.charAt(2)-49; // 배열 0부터 시작
while (left < right) {
int temp = arr[left];
arr[left++] = arr[right];
arr[right--] = temp;
}
}
br.close();
for (int baguni:arr)
System.out.print(baguni + " ");
}
}
정답은 나오는데 왜 안되는지 모르겠음
'IT > Java[백준]' 카테고리의 다른 글
백준[Java] 11382번 꼬마 정민 (0) | 2023.03.07 |
---|---|
백준[Java] 10811번 바구니 뒤집기 [배열 Double 사용 문제] (0) | 2023.03.04 |
백준[Java] 3052번 나머지 (HashSet 사용) (0) | 2023.03.01 |
백준[Java] 5597번 과제 안 내신 분..? (0) | 2023.02.28 |
백준[Java] 10813번 공 바꾸기 (0) | 2023.02.28 |