[백준 자바] 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 활용) / 아래 (Scanner 활용)

 

* * 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

BELATED ARTICLES

more