Java.util.Scanner
Scanner
- 파일, 입력 스트림 등에서 데이터를 읽어 구분자로 토큰화하고, 다양한 타입으로 형변환
하여 리턴해주는 클래스
- 대량의 데이터 처리 시 수행시간이 비효율적
주요 메서드
- nextInt(), nextDouble(), nextLong()
ㄴ 데이터 타입 반환
ㄴ 유효 문자열 후 White space 문자를 만나면 처리
- next()
ㄴ 문자열 반환
ㄴ 유효 문자열 후 White space 문자를 만나면 처리
- nextLine()
ㄴ 문자열 반환
ㄴ 개행(Enter) 문자를 만나면 처리
ㄴ next()와 달리 문자열 안에 띄어쓰기를 할 수 있음 (space, tab 포함 가능)
** 주의할 점
nextLine을 제외한 나머지 next는 white space 전까지 읽고 버퍼에 white space를 남겨둔다. 하지만 다음 next를 호출할 때 Scanner 내부에서 알아서 white space를 처리한다.
⇒ next 이후 nextLine() 메서드를 호출하는 경우 이전에 남아있던 white space를 가진
상태로 버퍼에 읽어들이게 되어, 정확한 값을 구하지 못할 수 있다.
(nextInt()로 int 하나 입력받은 후 nextLine()으로 다음 줄을 입력받으려고 할 때 '\n' 가
남아있어서 nextLine이 바로 '\n'을 만나고 종료해버림)
Java.io.BufferedReader
BufferedReader
- 필터 스트림 유형 (InputStreamReader 를 가지고 있음)
- 줄(line) 단위로 문자열 처리 기능
- 대량의 데이터 처리 시 수행시간이 효율적
StringTokenizer
- BufferedReader는 기본적으로 줄 단위로 문자열을 읽어옴
⇒ StringTokenizer를 활용하여 구분자 기준으로 잘라서 사용할 수 있음
- 기본 구분자 == (" ")
Java.lang.StringBuilder
StringBuilder
- 문자열의 조작을 지원하는 클래스
- 자바에서 상수로 취급되는 문자열을 조작 시마다 새로운 문자열이 생성되는 것 방지
- append() ⇒ 문자열 붙이기
- toString() ⇒ 모은 문자열 하나의 문자열로
- setLength() ⇒ 길이만큼 자르기
좋은 알고리즘의 기준
1) 정확성 : 얼마나 정확하게 동작하는가
2) 작업량 : 얼마나 적은 연산으로 원하는 결과를 얻어내는가 (시간복잡도)
3) 메모리 사용량 : 얼마나 적은 메모리를 사용하는가
4) 단순성 : 얼마나 단순한가
5) 최적성 : 더 이상 개선할 여지없이 최적화되었는가
Array
배열
- 동형집합
- 일정한 자료형의 변수들을 하나의 이름으로 열거하여 사용하는 자료구조
- 배열을 통해 하나의 선언을 통해서 둘 이상의 변수 선언 가능
- 단순한 다수 변수 선언 이상으로 다수의 변수로는 하기 힘든 작업을 배열 활용 처리