관리 메뉴

100세까지 코딩

[do it 알고리즘] 백준 11659 (구간 합 구하기) 본문

코딩테스트/자바

[do it 알고리즘] 백준 11659 (구간 합 구하기)

100세까지 코딩 2023. 9. 22. 00:04
문제 설명

 

풀기 전 생각
  • 배운 대로 구간 합 공식을 사용
  • 인덱스는 0부터 시작하지만 구간은 1부터 시작하므로 [N+1] 배열 선언
  • 구간 합 배열은 S [1]부터 채워 나가기
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Baek11659 {
    public static void main(String[] args) throws IOException {
        BufferedReader bf =
                new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(bf.readLine());
        int N = Integer.parseInt(st.nextToken());
        int M = Integer.parseInt(st.nextToken());
        long[] S = new long[N + 1];
        st = new StringTokenizer(bf.readLine());
        for(int i = 1; i <= N; i++) {
            S[i] = S[i-1] + Integer.parseInt(st.nextToken());
        }
        for(int k =0; k < M; k++) {
            st = new StringTokenizer(bf.readLine());
            int start = Integer.parseInt(st.nextToken());
            int end = Integer.parseInt(st.nextToken());
            System.out.println(S[end] - S[start-1]);
        }
    }
}
오류 및 개선
  • 처음에 Scanner로 입력을 받았지만 코테는 속도가 중요
  • BufferedReader와 StringTokenizer 사용에 익숙해지기
  • StringTokenizer 오류가 계속 발생
  • 인텔리제이 2022.1.03 버전의 문제였고 최신버전으로 새로 설치
참고
 

[자바 공부] StringTokenizer

StringTokenizer 문자열을 우리가 지정한 구분자로 문자열을 쪼개주는 클래스 주요 메서드 countTokens() 현재 남아있는 token 개수 hasMoreTokens() 남아있는 토큰이 있으면 true, 없으면 false nextToken() 객체에

sjd0219.tistory.com

 

 

[자바 공부] BufferedReader vs Scanner

한눈에 정리 BufferedReader Scanner 버퍼 사이즈(byte) 8192 1024 데이터 파싱 String으로 단순히 읽음 원하는 타입으로 파싱 예외 처리 IOException 던짐 IOException 숨김 Syncronized O X 속도 빠름 느림 1) Scanner 공백

sjd0219.tistory.com

구간 합 알고리즘!!