달달한 스토리

728x90
반응형

 

아고.. 이번 주가 앱 배포라 바쁘다.

 

최근에 사이드 프로젝트에도 참여하려고 했으나..

 

여유가 없으니./

 

우선 코딩테스트를 더 적응하고 나서 해도 늦지 않을 것 같다.

 

(아니면 병행을 해도..)

 

8393

 

이 문제는 전 문제와 비슷하여 쉽게 풀었다.

 

import java.io.*;

class Main {
    
    public static void main(String[] args) throws IOException {
        
        BufferedReader bf = 
            new BufferedReader(new InputStreamReader(System.in));
        
        int value = Integer.parseInt(bf.readLine());
        
        int result = 0;
        
        for(int i = 1; i <= value; i++) {
            result += i;
        }
        
        System.out.print(result);
    }
    
}

 

어려웠던 건 다음 문제였다.

 

15552

 

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;

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));
        
        int length = Integer.parseInt(br.readLine());
        
        StringTokenizer st;
        
        for(int i = 0; i < length; i++) {
            st = new StringTokenizer(br.readLine());
            bw.write((Integer.parseInt(st.nextToken())) + 
                    Integer.parseInt(st.nextToken()) + "\n");
        }
        
        //다 쓴 리더를 닫아준다.
        br.close();
        
        //이후로 writer는 버퍼를 비워준뒤 닫아준다.
        bw.flush();
        bw.close();
        
    }
}

 

항상 잘 모르고, 효율이 좋다는 말만 듣고 BufferedReader를 사용했는데,

 

for문을 돌릴때 시간 초과가 걸려버린 것이다.

 

서칭을 해보니, 1.5초안에 프로그램이 실행되게 하지 않으면,

 

시간 초과가 걸린다는 것이다.

 

그래서 시간이 빠르게 하기 위해서 BufferedReader, Writer

 

InputStreamReader, OutputStreamWriter를 활용하여 문제를 풀었다.

 

문자열을 담아 한번에 출력하는 스트림을 사용하는 것이 정규식을 남발하여

 

속도가 느린 Scanner나 System.out.print()를 쓰는 것보다

 

훨씬 빠르다는 것이다.

 

BufferedReader를 다 쓰면 close() 메서드로 닫아주고,

 

BufferedWriter flush()로 버퍼를 비워주고, close()로 닫아준다.

 

flush는 버퍼 안에 남아 있는 데이터를 비워주는 역할을 한다.

 

앞으로 자주 사용할 것 같으니, 

 

익혀두면 좋을 것 같다.

728x90
반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading