java로 MAXSUM 시간초과를 어떻게 해결할까요 ㅠ

  • 파밀리아
    파밀리아

    for문을 테스트 케이스를 포함하여 n2번인데.. 어떻게 시간을 더 줄일수 있을런지가..의문입니다. java가 cpp에 비해서 많이 느린것을 커버할 수 있을 수단을..못찾겠네요

    import java.io.*;

    public class Main {
    public static void main(String[] ar) throws IOException {

    BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
    
    
        int T = Integer.parseInt(in.readLine());
    
        for (int i = 0; i < T; i++) {
    
            int n = Integer.parseInt(in.readLine());
            int num[] = new int[n];
            int sum1 = 0;
            int sum2 = 0;
            String str = in.readLine();
    
    
            for (int j = 0; j < n; j++) {
                num[j] = Integer.parseInt(str.split(" ")[j]);
            }
    
    
            for(int j = 0; j < n; j++){
                sum2 += num[j];
                if(sum2<0) sum2 = 0;
                if(sum2 > sum1) sum1 = sum2;
            }
    
    
            System.out.println(sum1);
    
        }
    
    }

    }


    8년 전
2개의 댓글이 있습니다.
  • amok
    amok

    이 코드에서는 str.split(" ")가 굉장히 여러 번 호출됩니다. 한 번만 호출되도록 수정하시면 통과될 겁니다.


    8년 전 link
  • 파밀리아
    파밀리아

    오호 감사합니다. split을 1번만 사용하니까 RTE에 안걸리네요.!


    8년 전 link
  • 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.