[백준 자바] 2562 최댓값 (Scanner/ BufferedReader)
2023. 11. 29. 21:41
728x90
1. 자연수 9개 입력받기
Scanner sc = new Scanner(System.in);
// 사이즈 9인 배열 생성
int[] intArray = new int[9];
// 9개의 input을 배열 안에 넣기
for (int i=0; i<intArray.length; i++) {
intArray[i] = sc.nextInt();
}
2. 그 자연수 배열에서 최댓값 찾기 (max)
3. 그 최댓값이 몇번째 수인지 찾기 (index)
int max = intArray[0]; //일단 첫번째 값을 넣기
int index = 0; // index값 초기화
for (int i=0; i<intArray.length; i++) { // 전체 배열을 훑으며
if (max < intArray[i]) { // max값보다 크면
max = intArray[i]; // max에 넣기
index = i+1; // 그 경우 index 값도 함께 저장 (배열이므로 +1 해주기)
}
}
System.out.println(max);
System.out.println(index);
+ 또다른 방법 : BufferedReader 사용
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); //이 부분이 다름
// 입력값을 BufferedReader로 받음
int[] intArray = new int[9];
int max = intArray[0];
int index = 0;
for (int i=0; i<intArray.length; i++) {
intArray[i] = Integer.parseInt(br.readLine()); //readLine()으로 받아서 int로 형변환
if (max < intArray[i]) {
max = intArray[i];
index = i+1;
}
}
System.out.println(max);
System.out.println(index);
}
* * BufferedReader 활용한 것이 훨씬 빠르고 적은 메모리 사용했다.
<BufferedReader>
** BufferedReader는 개행문자만 경계로 인식하고, 입력받은 데이터가 String으로 고정됨. > 그러나 Scanner보다 속도는 빠르다.
- 사용법
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); //선언
String input = br.readLine(); //입력은 readLine()메서드 활용
// 리턴 값이 String이므로 형변환 필요함.
int i = Integer.parseInt(br.readLine());
- readLine()시 마다 try/catch문으로 감싸거나, throws IOException을 통한 예외처리 필요.
- 공백 단위로 데이터를 가공하고 싶다면? >> StringTokenizer / String.split() 함수 사용
// StringTokenizer
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
// String.split() 함수 사용
String arr[] = input.split(" ");
- 메인 함수들
메서드 | 기능 |
void close() | 입력 스트림을 닫고, 사용하던 자원을 해제 |
void mark(int, readAheadLimit) | 스트림의 현재 위치를 마킹 |
int read() | 한 글자만 읽어 정수형으로 반환 |
String readLine() | 한 줄을 읽음 |
boolean ready() | 입력 스트림이 준비 되었는지 확인 (준비완료시 1) |
728x90
'Coding test > 코딩테스트' 카테고리의 다른 글
Stack 스택 / 괄호검사 / DFS / 후위표기법 (5) | 2023.12.06 |
---|---|
연습용 (1) | 2023.12.05 |
[프로그래머스] 유한소수 판별하기 (1) | 2023.09.15 |
[프로그래머스 스택/큐] 올바른 괄호 (0) | 2023.09.06 |
[프로그래머스 스택/큐] 같은 숫자는 싫어 (0) | 2023.08.30 |