재귀함수와 정렬(3)

김민지·2023년 1월 14일
0

코딩테스트

목록 보기
20/31
post-custom-banner

2947

시간초과

  • 왜시간 초과가 나는지 모르겠었다
    flush를 해서 제대로 함수가 종료된줄알았는데 아니였다
    while문을 계속돌고있었다

시간초과 난 코드

import java.io.*;
import java.nio.Buffer;
import java.util.Arrays;

public class Main{

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        String input[] = br.readLine().split(" ");
        int arr[] = new int[input.length];
        for(int i=0;i<input.length;i++){
            arr[i] = Integer.parseInt(input[i]);
        }
        boolean isRepeat = true;
        while(true){
            for(int i=0;i<input.length-1;i++){
                if(arr[i] > arr[i+1]) {
                    isRepeat = false;
                    int temp = arr[i];
                    arr[i] = arr[i+1];
                    arr[i+1] = temp;
                    for(int k=0;k<input.length;k++){
                        bw.write(arr[k] + " ");
                    }
                    bw.write("\n");
                    bw.flush();
                }
            }
            if(isRepeat) break;
        }
        System.out.println("asdas");
        for(int k=0;k<input.length;k++){
            bw.write(arr[k] + " ");
        }
        bw.write("\n");


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


}

for문을 돌면서 분명 isRepeat에 false가 넣어졌을것이다
그런데 나중에 12345여도, isRepeat가 true로 변경되는 일이 없기때문에 계속while문을 돌다가 시간초과가나는것이다

profile
안녕하세요!
post-custom-banner

0개의 댓글