Java

Java로 시작하는 알고리즘 – [백준 단계별 풀이] 1~2단계 기초 정리

Wally's 2025. 6. 26. 00:10

오늘부터 백준 단계별 문제 풀이를 Java로 시작했습니다. 

역시 첫걸음은 콘솔에 "Hello World"를 출력하는 것부터 시작했습니다.
1~2단계는 입출력과 사칙연산, 조건문 중심의 기초 문제들이지만,
자주 사용하는 Java의 내장 함수와 기본 문법 요소들을 다시 복습할 수 있었습니다.

문제 풀이에 등장한 Scanner, System.out.println, Math 클래스 등 자바의 내장 함수와 문법 구조들을 중심으로 정리한 기록입니다.
Java를 처음 배우거나, 알고리즘 문제를 풀며 Java의 기본 사용법을 익히려는 분들께 작은 도움이 되길 바랍니다.


목차

  1. Scanner 클래스 – 입력 처리
  2. System.out.println / System.out.printf – 출력 처리
  3. Math 클래스 – 연산 처리
  4. 조건문 – if, else if, switch
  5. import 문과 Scanner 닫기 처리

1. Scanner 클래스 – 입력 처리

백준 문제에서는 사용자로부터 숫자, 문자열 등을 입력받는 경우가 많았습니다. 

Java에서는 이런 콘솔 입력을 다룰 때 가장 자주 사용되는 클래스가 바로 Scanner입니다.

 

📌 Scanner란?

Scanner는 java.util 패키지에 포함된 클래스로,
키보드 입력(System.in)뿐만 아니라 파일, 문자열 등 다양한 소스로부터 데이터를 읽어올 수 있도록 설계된 입력 전용 도구입니다.

입력 스트림을 토큰(공백, 줄 바꿈 기준으로 분리된 단어) 단위로 분할하여 정수, 실수, 문자열 등을 형식에 맞게 읽어오는 기능을 제공합니다.

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in); // 입력 스트림 생성
        int number = sc.nextInt();           // 정수 입력
        String word = sc.next();             // 공백 전까지 문자열 입력
        sc.close();                          // 입력 스트림 종료
    }
}

 

🛠️ 주요 메서드

 

  • nextInt() : 정수(int) 입력
  • nextLong() : 정수(long) 입력
  • nextDouble() : 실수 입력
  • next() : 문자열 한 단어 입력 (공백 전까지)
  • nextLine() : 한 줄 전체 입력 (공백 포함)
  • nextBoolean() : true / false 입력 (불리언 값)

⚠️ next() vs nextLine() 차이

String a = sc.next();      // 공백 이전까지 한 단어 입력
String b = sc.nextLine();  // 줄 전체 입력

 


2. System.out.println / System.out.printf – 출력 처리

Java에서 가장 기본이 되는 출력 방식은 System.out.println()입니다.
줄 바꿈 포함 출력이 기본이며, 다양한 자료형을 출력할 수 있어 초보자에게 익숙해지기 좋습니다.

System.out.println("Hello World");  // 출력 후 줄 바꿈
System.out.print("출력만 하고 줄 바꿈 없음");

 

복잡한 형식이 필요한 경우에는 System.out.printf()를 사용합니다.
C언어의 printf()처럼 포맷 문자열과 함께 사용되며, 출력 형식을 더 세밀하게 조절할 수 있습니다.

int a = 10;
double b = 3.14159;
System.out.printf("정수: %d, 실수: %.2f\n", a, b);
// 출력 결과: 정수: 10, 실수: 3.14

 

🔹 자주 쓰는 포맷 코드

%d 정수 (int, long 등)
%f 실수 (소수점 포함)
%.2f 소수점 둘째 자리까지 출력
%s 문자열

 


3. Math 클래스 – 연산 처리

Java의 Math 클래스는 수학 관련 연산을 도와주는 유틸리티 클래스입니다.
기본 연산자(+, -, *, /, %)로 처리할 수 없는 수학 함수들이 필요할 때 사용합니다.

int max = Math.max(10, 20);    // 최대값: 20
int min = Math.min(10, 20);    // 최소값: 10
int abs = Math.abs(-5);        // 절댓값: 5
double pow = Math.pow(2, 3);   // 2의 3제곱 = 8.0
double sqrt = Math.sqrt(25);   // 제곱근 = 5.0

 

🔹 자주 쓰이는 상황

  • Math.max(a, b) / Math.min(a, b) : 조건 비교 없이 간결한 최대/최솟값 계산
  • Math.abs(n) : 음수 판별 없이 절댓값 구하기
  • Math.pow(), Math.sqrt() : 지수, 제곱근 연산

Java에서는 Math 클래스의 메서드들이 정적(static)으로 선언되어 있어, 객체를 생성하지 않고 바로 사용할 수 있습니다.

 


4. 조건문 – if, else if, switch

조건문은 문제 풀이의 핵심 논리 흐름을 담당합니다.
Java에서는 if ~ else, else if, switch 구문을 통해 다양한 분기 처리를 할 수 있습니다.

 

🔸 if, else if 예제

int score = 85;

if (score >= 90) {
    System.out.println("A");
} else if (score >= 80) {
    System.out.println("B");
} else {
    System.out.println("C");
}

 

🔸 switch 예제

int day = 3;

switch (day) {
    case 1: System.out.println("월요일"); break;
    case 2: System.out.println("화요일"); break;
    case 3: System.out.println("수요일"); break;
    default: System.out.println("기타");
}
  • 각 case 뒤에는 반드시 break 문을 써야 합니다.

5. import 문과 Scanner 닫기 처리

🔹 import java.util.Scanner;

Java에서 Scanner는 java.util 패키지에 포함되어 있으므로, 사용 전에 반드시 import 구문으로 가져와야 합니다.

import java.util.Scanner;

 

자동 임포트 기능이 있는 IDE에서는 생략될 수도 있지만,
백준이나 온라인 채점 사이트에서는 수동으로 꼭 작성해 줘야 오류가 발생하지 않습니다.

 

🔹 Scanner 닫기 (close())

Scanner는 System.in 스트림을 이용하므로, 사용 후 close()로 닫는 것이 권장됩니다.

Scanner sc = new Scanner(System.in); // 입력 처리
sc.close(); // 리소스 해제

백준처럼 짧은 실행 환경에서는 닫지 않아도 오류는 나지 않지만, 실무 및 좋은 습관 차원에서 닫아주는 것이 바람직합니다.

 


 

다음은 반복문과 배열을 활용하는 3~4단계 문제를 풀며
더 많은 문법 요소를 정리해 볼 예정입니다.
꾸준히 기록하며 Java에 익숙해지고, 기초를 탄탄히 다져가겠습니다. 💪

 

 

 

*위 내용 오타 및 수정해야 하는 내용 있으면 댓글로 알려주시면 감사합니다.