Import문 작성 습관
1주차때 문제 풀이 내용에 대해서 공유를 해보면서, 아래의 두가지 import문을 넣고 코딩 테스트를 푸는 습관을 들이자라는 상효의 의견이 있었다.
1. import java.io.*;
먼저 io.* 과 관련된 아래의 import문에 대한 설명이다
많은 코딩 테스트에서는 대량의 입력 데이터를 빠르게 처리해주는 시간복잡도와 관련한 내용이 정말 중요하다. 관련한 알고리즘 문제들을 몇개만 풀어봐도 알 수 있는 내용이지만,

코딩 테스트에서는 각 문제마다 정해진 시간 제한이 있으며, 작성한 코드가 이 시간을 초과하면 시간 초과(TLE, Time Limit Exceeded) 라는 결과가 출력되며 오답 처리된다.
흔히 사용되는 Scanner는 사용법이 간편하지만, 입출력 속도가 느려 대량의 데이터를 다룰 때 비효율적이다.
따라서, 더 빠른 입출력 속도를 제공하는 BufferedReader와 BufferedWriter를 활용하는 것이 효율적이다.
이러한 입출력 관련한 클래스를 사용해주기위해, import java.io.*;를 미리 포함하고 시작해주면, 빠른 입출력 처리가 가능하도록 해줄수 있다.
2. import java.util.*;
코딩 테스트에서는 다양한 자료구조(Stack, Queue, PriorityQueue, HashMap 등등)를 활용해야 하는 경우가 정말 많다.
문제에 따라 어떤 자료구조가 필요할지 미리 알 수 없는 경우가 많기 때문에, 각 자료구조에 맞는 import문을 일일이 추가하는 것보다, java.util.*;을 포함하여 필요한 컬렉션을 즉시 사용할 수 있도록 준비하는 것이 코드 작성 시간이랑, 문제 고민 시간을 절약할 수 있어서 더욱 효율적임을 깨달았다.
이러한 습관을 들이면, 불필요한 import문을 추가하는 데 걸리는 시간을 줄이고, 문제 해결에 집중할 수 있다는 점에서 도움이 될 수 있다
BufferedReader, BufferedWriter 사용
1. Scanner의 문제점
Scanner는 내부적으로 next()나 nextInt() 등의 메서드를 호출할 때 정규식을 기반으로 입력을 읽고 분석하는 과정을 거치기때문에,
이러한 과정이 많아질수록 연산 속도가 느려지고, 특히 반복문이 많을 경우 실행 속도가 급격히 저하된다.
따라서 대량의 입력을 처리할 때, Scanner를 사용하면 시간 초과가 발생할 가능성이 높아진다.
2. BufferedReader의 장점
반면에 BufferedReader는 버퍼를 이용하여 데이터를 한 번에 읽어오기 때문에, 속도가 훨씬 빠르고 내부적으로 버퍼 크기만큼 데이터를 한꺼번에 읽어와서 처리하는 방식이므로, 반복적인 I/O 작업을 줄여줄 수도 있다
3. BufferedWriter의 장점
결론적으로 알고리즘에서 처리해줘야하는 데이터가 많으면 많을수록 Scanner보다 BufferedReader를 사용하는 것이 훨씬 효율적이다
모든 입출력이 끝난뒤에는
BufferedWriter는 bw.flush() 를 호출하여 남은 데이터를 모두 출력해야하고,
BufferedWriter는 사용이 끝난 후 bw.close() 를 호출하여 자원을 해제해줘야한다.
또 BufferedReader도 사용이 끝난 후 br.close() 를 호출해줘야한다
해당 과정들을 통해서, 파일 입출력 시 불필요한 메모리 낭비를 방지해주는 역할을 해줄 수 있다
'알고리즘' 카테고리의 다른 글
프로그래머스(입국심사, LV3) (0) | 2025.02.14 |
---|---|
프로그래머스(오픈채팅방, LV2) (1) | 2025.02.12 |
백준(2751번, 수 정렬하기 2, 실버V) (1) | 2025.02.08 |
백준(12891번, DNA 비밀번호, 실버II) (0) | 2025.02.05 |
백준(1940번, 주몽, 실버IV) (1) | 2025.01.30 |