limjihun204   5년 전

import java.io.BufferedWriter;
import java.io.OutputStreamWriter;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) throws Exception{
        Scanner sc = new Scanner(System.in);
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        int n = sc.nextInt();
        int[] a = new int[n+1];
        for (int i = 1; i <= n ; i++) {
            a[i] = sc.nextInt();
        }
        int m = sc.nextInt();

        while(m-- > 0){
            int s = sc.nextInt();
            int e = sc.nextInt();
            String temp1="", temp2="";
            for (int i = s; i <= e ; i++) {
                temp1 += a[i];
            }
            for (int i = e; i >= s ; i--) {
                temp2 += a[i];
            }
            bw.write((temp1.equals(temp2)) ? "1\n" : "0\n");
           




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

djm03178   5년 전

  1. 코드는 코드 올리는 칸에 올려주세요.
  2. 질문을 올리는 데에 최소한의 성의는 보입시다. 어떤 점을 해결하고 싶은지, 특별히 궁금한 사항 같은 게 있는지 정도는 적고, 코드의 로직에 대한 간단한 설명도 적고요.
  3. String 객체에 +=을 하는 연산은, 기존의 객체의 내용과 덧붙여질 내용을 전부 복사해서 새로운 String 객체를 만드는 과정입니다. 그래서 이를 n번 반복하는 건 O(n^2) 시간이 걸립니다. 이는 StringBuilder 등을 쓰면 좀 더 빠르게 할 수 있지만, 애초에 substring 이라는 좋은 메서드가 있는데 굳이 이렇게 할 필요가 없습니다.
  4. 이 문제는 이렇게 쿼리마다 매번 부분문자열 전체를 비교해서 풀기를 원하지 않습니다. 이렇게 풀려고 하면 시간 초과가 나도록 의도된 문제입니다. 더 빠르게 푸는 법을 생각해 보세요.

댓글을 작성하려면 로그인해야 합니다.