본문 바로가기

코딩 테스트 문제 풀이/백준

백준 - 입출력과 사칙연산 2257

항해 99를 마치고, 알고리즘 공부를 새롭게 시작하고자 한다.

 

그동안 시간 복잡도 개념에 대해서 무지한 채로 코딩을 진행해왔었는데, 좀 더 클린한 코드를 작성하기 위해서 시간 복잡도 개념이 들어가있는 백준에서 알고리즘 문제풀이를 시작하려고 한다.

 

프로그래머스와 달리 백준은 답변을 제출하는 방식이 달랐다.

 

제출할 코드의 클래스 이름을 반드시 Main으로 통일해주어야한다.

 

2257 문제는 Hello World!를 출력하는 간단한 문제였다.

 

package 입출력과_사칙연산.Q2257;

import java.io.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        bw.write("Hello World!");
        bw.flush();
        bw.close();
    }
}

 

System.out.println()

기존 출력 시에 위의 메서드를 사용해 왔는데, 성능이 많이 떨어진다고 한다. 그 이유는 매 번 문자열을 출력할 때 마다 I/O 작업을 수행하기 때문이라고 한다. 처리할 데이터가 많아질 수록 급격히 성능이 낮아지기 때문에, 시간 복잡도를 체크하는 백준에서는 다른 방법으로 출력을 진행하고 있었다.

 

일단은 BufferedWriter를 사용해서 출력을 진행했는데, StringBuffer나 StringBuilder로도 출력을 진행할 수 있는데 추후 번갈아서 사용해보며 성능 테스트를 진행해볼 생각이다.

 

이후에 제출했더니.. 런타임 에러가 발생했다.

 

확인해보니, 패키지 이름을 제외하고 제출을 해야한다고 한다.

패키지를 제외한 코드를 제출하니 통과되었다.

 

 

취업 전에 집중적으로 문제를 풀어보겠지만, 취업 이후에도 하루에 한 문제씩이라도 꾸준히 알고리즘 문제를 풀어볼 생각이다. 블로그 포스팅을 게을리 하지않도록 해야겠다.