일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- Android
- androidstudio
- bitmap
- BOJ
- Canvas
- CS
- Database
- DBeaver
- DP
- Ecilpse
- Eclipse
- firebase
- git
- github
- GooglePlayServices
- gradle
- IDE
- IntelliJ
- java
- json
- kotlin
- level2
- linux
- mariadb
- MYSQL
- Paint
- permission
- python
- Sorting
- sourcetree
Archives
will come true
[BOJ] 백준 10951번 - A+B 본문
728x90
문제
https://www.acmicpc.net/problem/10951
핵심 키워드
- 입출력 I/O
- Scanner
- BufferedReader
- StringTokenizer
Scanner를 사용한 코드
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNextInt()) {
int a = sc.nextInt();
int b = sc.nextInt();
System.out.println(a + b);
}
}
}
- nextInt() : 정수값 단위로 입력받는다.
- nextLint() : 라인단위로 입력받는다.
=> 한 줄에 여러 값이 공백으로 구분되어 있을 경우공백을 구분자로 잘라야 한다.
BufferedReader를 사용한 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
StringTokenizer st;
String str;
while((str = br.readLine()) != null) {
st = new StringTokenizer(str, " ");
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
sb.append(a + b).append("\n");
}
System.out.println(sb);
}
}
- Scanner 클래스의 nextInt()와 같은 메서드가 없기 때문에 readLine()을 사용해 라인 단위로 입력받는다.
- 읽어들인 하나의 라인(String)에서 공백을 구분자로 데이터를 자른다.
- new StringTokenizer(str, " ") : str을 공백을 기준으로 토큰이라는 여러 개의 문자열로 잘라낸다. StringTokenizer 객체 반환, nextToken()으로 값 접근 가능
학습 내용
Java 입출력 방법
- java.io.BufferReader
- java.util.Scanner
- java.io.Console : 화면 입출력 전문 (콘솔창)
// JDK1.5 이전
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String input = br.readLine();
// JDK1.5 이후(java.util.Scanner)
Scanner s = new Scanner(System.in);
String input = s.nextLine();
// JDK1.6 이후(java.io.Console)
Console console = System.console();
String input = console.readLine();
java.util.Scanner 클래스
- 화면, 파일, 문자열과 같은 입력소스로부터 문자데이터를 읽어올 수 있다.
- 정규식을 이용한 라인단위 검색이 가능하며, useDelimiter() 메서들 사용해 구분자 지정 가능.
- nextInt(), nextLong(), nextDouble() 등 메서드를 사용하면 바로 특정 타입 입력을 받을 수 있다.
입력 타입에 어긋날 시 예외(InputMismatchingException) 발생
//Scanner 생성자
Scanner(String source)
Scanner(File source)
Scanner(InputStream source)
Scanner(Readable source)
Scanner(ReadableByteChannel source)
Scanner(Path source)
java.io.BufferedReader 클래스
- 버퍼를 이용해서 입출력의 효율을 높일 수 있도록 해주는 역할.
- readLine() 메서드를 사용해서 입력을 라인 단위로 읽을 수 있다.
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String line = "";
while((line = br.readLine()) != null){
System.out.println(line);
}
java.io.InputStreamReader
- 바이트기반 스트림을 문자기반 스트림으로 연결시켜주는 역할
- 바이트기반 스트림의 데이터를 지정된 인코딩의 문자데이터로 변환해주는 작업을 수행.
메서드 | 설명 |
InputStreamReader(InputStream in) | OS에서 사용하는 기본 인코디으이 문자로 변환하는 InputStreamReader를 생성한다. |
String 문자열을 구분자로 자르는 방법
- StringTokenizer 클래스
- String의 split(String regex) 메서드 사용
- Scaner의 userDelimeter(String pattern) 메서드 사용
java.util.StringTokenizer 클래스
- 긴 문자열을 지정된 구분자(delimeter)를 기준으로 토큰(token)이라는 여러 개의 문자열로 잘라내는 데 사용.
- 구분자로 단 하나의 문자밖에 사용할 수 없기때문에 정규식 사용 불가.
ex) StringTokenizer st = new StringTokenizer(str, "+-*/=()");
=> 구분자는 "+-*/=()" 문자열이 아니라, '+', '-', '*', '/', '=', '(', ')' 개별 문자 모두가 하나씩 구분자. - StringTokenizer로 자른 각 문자열(token)로 다시 StringTokenizer을 생성해서 다시 한번 특정 구분자로 자를 수 있다.
ex) String str = "1, 김감귤, 100, 100, 100 | 2, 이딸기, 90, 95, 100 | 3, 박수박, 100, 50, 100";
메서드 | 설명 |
StringTokenizer(String str, String delim) | 문자열을 지정된 구분자로 나누는 StringTokenizer를 생성. 구분자는 토큰에서 제외됨. |
Stringtokenizer(String str, String delim, boolean returnDelim) | 문자열을 지정된 구분자로 나누는 StringTokenizer를 생성. returnDelim의 값을 true로 하면 구분자도 토큰에 포함됨. |
int countTokens() | 전체 토큰의 수를 반환 |
boolean hasMoreTokens() | 토큰이 남아있는지 여부 반환 |
String nextToken() | 다음 토큰 반환. (구분자를 기준으로 잘린 문자들에 접근) |
728x90
'Algorithm' 카테고리의 다른 글
[BOJ] 백준 10808번 - 알파벳 개수 (Java) (0) | 2021.11.15 |
---|---|
[BOJ] 백준 2445번 - 별 찍기 8 (0) | 2021.11.11 |
[프로그래머스 / Level1] 실패율 (Java) (1) | 2021.11.08 |
[프로그래머스 / Level1] 로또의 최고 순위와 최저 순위 (Java) (0) | 2021.11.07 |
[프로그래머스 / Level1] 숫자 문자열과 영단어 (Java) (0) | 2021.11.06 |
Comments