백준 11728번: 배열 합치기 [분할정복] - Java :: 매운코딩
728x90
300x250

www.acmicpc.net/problem/11728

 

11728번: 배열 합치기

첫째 줄에 배열 A의 크기 N, 배열 B의 크기 M이 주어진다. (1 ≤ N, M ≤ 1,000,000) 둘째 줄에는 배열 A의 내용이, 셋째 줄에는 배열 B의 내용이 주어진다. 배열에 들어있는 수는 절댓값이 109보다 작거��

www.acmicpc.net

 

 

Scanner를 통해 입력받고, System.out.println으로 출력하였을 때 시간초과가 난 코드

package algorithm.boj;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.Arrays;
import java.util.Scanner;

public class Fun11728 {

	public static void main(String[] args) throws FileNotFoundException {
		System.setIn(new FileInputStream("input.txt"));
		Scanner sc = new Scanner(System.in);
		
		int arr[] = new int[sc.nextInt() + sc.nextInt()];
		
		
		for (int i = 0; i < arr.length; i++) {
			arr[i]=sc.nextInt();
		}
		
		Arrays.sort(arr);
		
		for(int i : arr) {
			System.out.print(i+" ");	
		}
		System.out.println();

	}

}

 

BufferedReader와 BufferedWriter를 이용해서 푸니 성공

import java.io.*;
import java.util.*;

public class Main {

	public static void main(String[] args) throws IOException {

		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
				
		StringBuilder sb = new StringBuilder();
		sb.append(br.readLine());
		
		StringTokenizer st = new StringTokenizer(sb.toString());
		
		int arr[] = new int[Integer.parseInt(st.nextToken()) + Integer.parseInt(st.nextToken())];
		int idx = 0;
		
		st = new StringTokenizer(br.readLine());
		
		while(st.hasMoreTokens()) {
			arr[idx++] = Integer.parseInt(st.nextToken());
		}
		st = new StringTokenizer(br.readLine());
		while(st.hasMoreTokens()) {
			arr[idx++] = Integer.parseInt(st.nextToken());
		}
		Arrays.sort(arr);
		
		
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		
		for(int i : arr) {
			bw.write(i +" ");
		}

		bw.flush();
		bw.close();
	}

}
728x90

+ Recent posts