[문제] 👉 https://www.acmicpc.net/problem/4470
설명
입력받은 문자열에 번호를 차례로 부여하는 문제이다.
풀이
단순히 번호를 부여하는 문제이므로 풀이 설명 생략
Scanner 대신 BufferReader 와 BufferedWriter 사용
BufferedReader/BufferedWriter 사용 방법
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); // 입력 선언
String str = br.readLine(); //키보드로 입력 받기
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); // 출력 선언
bw.write(str); //출력
키보드로 입력받을 수 있는 readLine()을 사용하려면 throws IOException 를 붙여야 한다.
형변환 필요
BufferdReader는 String으로 고정되어 있기 때문에 정수를 입력하려면 형변환이 필요하다.
int n = Integer.parseInt(br.readLine());
추가 메서드
bw.newLine(); // 줄바꿈
bw.flush(); // 남아있는 데이터 모두 출력
bw.close(); //버퍼 닫기
Solution
import java.io.*;
public 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 n = Integer.parseInt(br.readLine()); //String으로 리턴 값이 고정되어 있으므로 형변환(예외 처리 필요)
String[] names = new String[n];
for (int i = 0; i < n; i++) {
String name = br.readLine();
names[i] = (i + 1) + ". " + name;
}
for (String result : names) {
bw.write(result); //출력
bw.newLine(); // 줄바꿈
}
bw.close();
}
}
👩💻 회고
아는게 Scanner 뿐이어서 그것만 사용하고 있다가 BufferdReader로 입출력을 빠르게 하고 싶어서 사용해봤다. 코드가 훨씬 더 길어지고 사용해야 할 메서드가 많아졌지만 확실한 건 메모리나 속도가 빨라졌다는 것이다. 그리고 Scanner를 쓸 때 개행문자때문에 불편했는데 버퍼를 사용하니 그런 불편함이 사라졌다.
'BOJ 코딩테스트 > Bronze' 카테고리의 다른 글
BOJ 5554 : 심부름 가는 길 (Java/구현/Bronze 4) (1) | 2024.10.09 |
---|---|
BOJ 5524 : 입실 관리 (Java/구현/Bronze 4) (1) | 2024.10.09 |
BOJ 4299 : AFC 윔블던 (Java/구현/Bronze 4) (2) | 2024.10.08 |
BOJ 2845 : 파티가 끝나고 난 뒤 (Java/구현/Bronze 4) (1) | 2024.09.30 |
BOJ 2083 : 럭비 클럽 (Java/구현/Bronze 4) (0) | 2024.09.29 |