- Today
- Total
Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 워스프레스
- 오류해결
- JSP
- sql
- dbeaver
- 배열
- 엘리멘터
- spring boot
- iframe
- 자바스크립트
- wordpress
- 프로시저
- 트러블슈팅
- pl/sql
- function
- 클론코딩
- 환경세팅
- 이클립스
- PLSQL
- 문제해결
- Oracle
- javascript
- Hostinger
- 오라클
- 워드프레스
- 함수
- PROCEDURE
Archives
개발 공부중
[백준] 11720번 문제 - 자바 Scanner/BufferedReader 비교 본문
방법 1: Scanner로 입력받아 charAt()을 사용하여 계산하는 방법
이 방법은 입력된 문자열에서 각 문자의 숫자 값을 charAt()을 이용하여 가져와서 계산하는 방식입니다.
예를 들어, 문자 '5'의 아스키 코드 값은 53이며, 문자 '0'의 아스키 코드 값은 48입니다. 그래서 문자 '5'의 숫자 값은 53 - 48이 되어 5가 됩니다. 아스키 코드 값에서 '0' 또는 48을 빼줌으로써 문자를 숫자로 변환합니다.
이와 같은 방식으로 반복문을 통해 각 숫자 값을 더합니다.
charAt() 특징
charAt() 메서드는 문자열에서 특정 위치에 있는 문자(character)를 가져오는데 사용됩니다. 문자열은 문자의 배열로 이루어져 있기 때문에, charAt()을 이용하여 문자열 내의 특정 위치의 문자를 쉽게 접근할 수 있습니다.
코드 예제:
package one;
//Scanner 로 입력받아 charAt() 을 사용하여 푸는 방법
import java.util.Scanner;
public class Test11720 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int count = sc.nextInt();
String str = sc.next();
int sum = 0;
for(int i = 0; i< count; i++) {
sum = sum + (str.charAt(i)-'0');
// charAt() 은 해당 문자의 아스키코드 값을 반환하므로
//반드시 -48 또는 -'0' 을 해주어야 우리가 입력받은 숫자 값 그대로를 사용할 수 있다.
}
System.out.println(sum);
}
}
방법 2: BufferedReader로 입력받아 계산하는 방법
이 방법은 BufferedReader를 사용하여 입력을 받고, 문자열의 각 문자 값을 빼서 계산하는 방식입니다.
read() 메서드를 사용하여 입력 데이터를 읽어들이며, 이 때 '0'을 빼줌으로써 문자를 숫자로 변환합니다.
이와 같은 방식으로 반복문을 통해 입력 데이터를 순회하며 각 숫자 값을 더하여 결과를 도출합니다.
BufferedReader 특징
- 성능 향상: BufferedReader는 입력 데이터를 한 번에 버퍼에 읽어온 후, 버퍼에서 데이터를 읽어 처리합니다. 이로써 입출력 작업의 효율성이 크게 향상됩니다.
- 문자 처리: BufferedReader는 문자 기반 입력 스트림을 처리하는 데 최적화되어 있습니다. 문자 인코딩을 자동으로 처리하므로 문자열을 읽을 때 인코딩 변환이 필요 없습니다.
- 한 줄씩 읽기: readLine() 메서드를 사용하여 한 줄씩 데이터를 읽을 수 있습니다. 이는 텍스트 파일이나 네트워크 소켓 등에서 데이터를 읽을 때 특히 유용합니다.
- 자동 예외 처리: IOException과 같은 예외를 자동으로 처리하여 코드를 더 간결하게 작성할 수 있습니다.
코드 예제:
package one;
//br.read()로 데이터를 입력하자마자 바로 계산하여 결과를 출력
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Test11720_2 {
// BufferedReader를 사용하기 위해서는 throws IOException을 해 주어야 함.
public static void main(String[] args) throws IOException {
// BufferedReader 선언 및 반복할 문자열 변수 N 선언
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
// readLine으로 받은 입력 데이터는 String
//UTF-16 인코딩에 맞게 각 문자의 값을 저장하므로 반드시 '0' 또는 48 을 빼주어야 한다.
// 합계 변수 선언
int sum = 0;
// 반복문을 사용 입력하면 바로 계산
for(int i =0; i<n; i++) {
sum += br.read() - 48;
}
// 결과 출력
System.out.println(sum);
br.close();
}
}
백준에서 채점해보니 BufferedReader 를 사용한 방법이 시간이 더 짧은 걸 알 수 있었다.
Comments