Algorithm/Java

백준(BOJ)에서 Java로 문제를 풀 때 알아야 할 핵심 팁들 및 제출시 주의사항

min민 2024. 12. 6.

안녕하세요! 오늘은 백준에서 Java로 알고리즘 문제를 풀 때 꼭 알아야 할 핵심 팁들을 공유해드리려 합니다. 제가 경험한 내용을 바탕으로 여러분에게 도움이 될 만한 정보들을 정리해보았습니다.

1. 클래스와 패키지 설정

백준에 제출할 때는 반드시 다음 조건을 지켜야 합니다:

  • 클래스명은 Main이어야 합니다.
  • 패키지는 사용하지 않습니다.
  • public class Main으로 작성해야 합니다.

2. 추가 클래스 사용 방법

메인 클래스 외 추가 클래스가 필요하다면:

  • public이 아닌 클래스
  • 내부(Inner) 클래스를 활용하세요

3. 메인 함수에서의 정적(Static) 메서드 사용

main 함수 내에서 작업할 때는 모든 변수와 메서드를 static으로 선언해야 합니다. 귀찮다면 별도의 솔루션 메서드로 래핑하는 방법도 있습니다.

4. 입력 속도 최적화: Scanner보다는 BufferedReader

Scanner는 내부적으로 정규식을 사용해 입력을 처리하기 때문에 매우 느립니다. 대신 BufferedReader와 StringTokenizer를 사용하면 입력 속도를 크게 개선할 수 있습니다.

빠른 입력 예시

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());

 

 

5. 입력 클래스는 하나만 생성

System.in을 사용하는 입력 클래스(Scanner, BufferedReader)는 반드시 한 개만 생성하세요. 여러 개 생성하면 버퍼 문제로 입력이 꼬일 수 있습니다.

6. 출력 속도 개선: System.out.println()보다 빠른 방법

System.out.println()은 생각보다 느릴 수 있습니다. 대안으로:

  • BufferedWriter 사용
  • StringBuilder로 모아서 한 번에 출력

출력 최적화 예시

StringBuilder sb = new StringBuilder();
sb.append(result).append("\n");
System.out.println(sb);

 

7. Java로 풀기 어려운 문제들

간혹 Java로는 풀기 어려운 문제들이 존재합니다. 대표적인 예로 실수 정밀도 문제 등이 있으니 주의가 필요합니다.

8. 메모리 제한에 주의

Java는 JVM 특성상 다른 언어에 비해 메모리 사용량이 높습니다. 테스트케이스가 많고 메모리 제한이 작은 문제의 경우 특히 주의가 필요합니다.

마무리

이 팁들은 제 개인적인 백준 문제 풀이 경험에서 얻은 것들입니다. 여러분의 알고리즘 solving 실력 향상에 도움이 되길 바랍니다!

언제든 추가적인 질문이 있다면 댓글로 남겨주세요. 즐거운 코딩 되세요! 🚀👨‍💻

 

 

댓글