[JAVA] CodeUp 1084 - 시간초과 해결하기

정상희·2022년 10월 22일
0

PS

목록 보기
8/8

문제

첫번째 풀이

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

public class CodeUp1084 {
    public static StringTokenizer st;

    public static void main(String[] args) {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        try {
            st = new StringTokenizer(br.readLine(), " ");
            int num1 = Integer.parseInt(st.nextToken());
            int num2 = Integer.parseInt(st.nextToken());
            int num3 = Integer.parseInt(st.nextToken());
            int count = 0;

            for(int i = 0; i < num1; i++){
                for(int j = 0; j < num2; j++){
                    for(int k = 0; k < num3; k++){
                        System.out.printf("%d %d %d\n", i, j, k);
                        count++;
                    }
                }
            }
            System.out.println(count);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
}

😂 bufferedReader을 사용하면 메모리나 시간이 줄어들 줄 알았는데
시간초과 발생했다. 이걸 bufferedWriter을 사용해서 풀이하면 메모리가 줄어들지 확인해보자.

두번째 풀이

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

public class CodeUp1084 {
    public static StringTokenizer st;

    public static void main(String[] args) {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        try {
            st = new StringTokenizer(br.readLine(), " ");
            int num1 = Integer.parseInt(st.nextToken());
            int num2 = Integer.parseInt(st.nextToken());
            int num3 = Integer.parseInt(st.nextToken());
            int count = 0;
            for(int i = 0; i < num1; i++){
                for(int j = 0; j < num2; j++){
                    String str = ""; // 문자열 초기화
                    for(int k = 0; k < num3; k++){
                        str += i+" "+j+" "+k+"\n";
                    }
                    bw.write(str);
                    bw.flush();
                }
            }
            System.out.println(num1 * num2 * num3);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
}

profile
기록중

0개의 댓글

관련 채용 정보