백준 자바 (JAVA) 10811번

개발개발·2023년 6월 20일

백준자바

목록 보기
8/8

백준 10811번 문제를 자바로 풀어보려 한다.
계속 런타임 에러 떠서 꽤나 화가 났던 문제 ㅎ,,

나는 for문이 편해서 for문을 사용했다

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));

        StringTokenizer st = new StringTokenizer(br.readLine());
        int N = Integer.parseInt(st.nextToken());
        int M = Integer.parseInt(st.nextToken());

        int[] arr = new int[N+1];

        for(int k=1; k<=N; k++) {
            arr[k] = k;
        }

        for (int k=0; k<M; k++) {
            StringTokenizer st2 = new StringTokenizer(br.readLine());
            int i = Integer.parseInt(st2.nextToken());
            int j = Integer.parseInt(st2.nextToken());

            for (int m=i; m<j; m++) {
                int sub = arr[m];
                arr[m] = arr[j];
                arr[j] = sub;
                j--;
            }


        }

        for (int n=1; n<=N ;n++) {
            System.out.print(arr[n]+" ");
        }


    }
}

while문으로도 풀어 봄

import java.io.*;
import java.util.Arrays;
import java.util.StringTokenizer;

public class Main {
    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+1];

        for(int k=1; k<=N; k++) {
            arr[k] = k;
        }

        for (int k=0; k<M; k++) {
            StringTokenizer st2 = new StringTokenizer(br.readLine());
            int i = Integer.parseInt(st2.nextToken());
            int j = Integer.parseInt(st2.nextToken());

            while (i<j) {
                int sub = arr[i];
                arr[i] = arr[j];
                arr[j] = sub;
                i++;
                j--;
            }
            
            
            
        }
        
        for (int n=1; n<=N ;n++) {
            System.out.print(arr[n]+" ");
        }


    }
}

둘 다 시간은 같았지만 for문이 메모리를 아주 아주 아주 조금 덜 차지함

0개의 댓글