[BOJ] 10811 JAVA

Organ·2023년 9월 9일
0

[문제 풀이]

목록 보기
27/123

바구니 뒤집기

문제

내 풀이

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


public class Main {
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int temp;

		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;

		for (int z = 0; z < M; z++) {
			StringTokenizer st1 = new StringTokenizer(br.readLine());
			int i = Integer.parseInt(st1.nextToken()) - 1;
			int j = Integer.parseInt(st1.nextToken()) - 1;
			while (i < j) {
				temp = arr[i];
				arr[i] = arr[j];
				arr[j] = temp;
				i++;
				j--;
			}
		}

		for (int i = 0; i < N; i++) {
			System.out.printf("%d ", arr[i]);
		}


	}
}

다른 풀이

import java.io.IOException;
import java.util.Scanner;

public class Main {

	public static void main(String[] args) throws IOException {
		Scanner sc = new Scanner(System.in);

		int[] arr = new int[sc.nextInt()];
		for (int i = 0; i < arr.length; i++) { // 기본배열 생성
			arr[i] = i + 1;
		}

		int N = sc.nextInt();
		for (int i = 0; i < N; i++) {
			int order1 = sc.nextInt() - 1;
			int order2 = sc.nextInt() - 1;
			
			while (order1 < order2) {
				int temp = arr[order1];
				arr[order1++] = arr[order2];
				arr[order2--] = temp;
			}

		}
		String ret = "";
		for (int j = 0; j < arr.length; j++) {
			ret += arr[j] + " ";
		}
		System.out.print(ret.trim());
		sc.close();
	}
}

정리

풀고 나서 생각해보니 그렇게 어려운 문제는 아닌데 꽤 오랜 시간이 걸렸다. 처음에 문제 조건을 제대로 안봐서 i가 큰 경우 j가 큰 경우 나눠서 하는 바람에 헛수고를 했다. 배열에 값을 넣어줄 때는 +1을 잘 해놓고 i부터 j번째에는 -1을 해주지 않아서 계속 틀리게 나오는 걸 바로잡느라 또 시간이 걸렸다.

출처

https://velog.io/@chamominedev/%EB%B0%B1%EC%A4%80-Baekjoon-10811%EB%B2%88-%EB%B0%94%EA%B5%AC%EB%8B%88-%EB%92%A4%EC%A7%91%EA%B8%B0-JAVA

0개의 댓글