프론트엔드 센트럴파크 (☞゚ヮ゚)☞

백준알고리즘_2693 본문

Algorism

백준알고리즘_2693

자라나라나무나무나 2022. 2. 17. 01:56

배열 A의 원소 10개 ☞ int[] arr = new int[10];
공백으로 구분되어 주어진다. ☞ StringTokenizer st = new StringTokenizer(br.readLine());

ThinkThink

1. BufferedReader 선언

2. int N 으로 입력값 4 받기

3. 배열 A의 원소가 10개인 배열 만들기

4. 10개일 배열 리스트 만들기

5. 배열 A 오름차순으로 정렬하기

6. 오름차순한 정렬에서 뒤에서 3번째의 값 출력하기


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;

public class Baek_2693 {
    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());

        int N = Integer.parseInt(st.nextToken());

        for (int i = 0; i < N; i++) {
            st = new StringTokenizer(br.readLine()); // 10개 숫자 받음
            int[] arr = new int[10]; // 10개의 숫자를 담을 배열
            for (int j = 0; j < 10; j++) {
                arr[j] = Integer.parseInt(st.nextToken());
            }
            Arrays.sort(arr); // 오름차순정렬
            System.out.println(arr[7]); // 뒤에서 3번째 값 출력

        }

    }
}


배열리스트를 만들어서 배열을 넣어서 출력을 하려는 생각을 했으나 

빈 배열 리스트를 만들고 배열 리스트에 배열을 넣어 다시 반복문을 돌려야 된다고 그러면 너무 시간과 메모리가 많이 든다고 동상이 가르쳐줬다.... 고마워 동상...

 

1. 첫번째 반복문으로 4번 반복문을 돌려준다.

이때 왜 StringTokenizer를 한번 더 선언하는 이유는 StringTokenizer는 한번 사용이 되면 재사용이 불가하기 때문에 

다시 선언을 해주고 readLine으로 4 다음줄인 배열 10개씩의 숫자들을 읽게 된다.

2. 빈 배열 arr에 10개를 담는다.

3. 두번째 반복문에서 j=0;을 해줬으면 J < 10;을 해줘야 인덱스 0~9 해서 10개가 생긴다.

4. 10개씩 4줄이 담긴 arr에 st.nextToken();을 이용해 공백을 빼고 자른다.

nextToken();은 공백자리를 땡겨서 채우는 메소드이다.

ex ) 1 2 3 4 5 6 7 이렇게 있으면 1234567 이렇게 땡겨서 채우는 메소드이다.

5. 배열들을 오름차순으로 정렬한다

6. 오름차순이기 때문에 3번째로 큰 수는 뒤에서 3번째인 수가 된다.

 

 

'Algorism' 카테고리의 다른 글

백준알고리즘_10718  (0) 2022.04.12
백준알고리즘_2557  (0) 2022.04.12
백준알고리즘_1978  (0) 2022.02.16
백준알고리즘_2440  (0) 2022.02.09
백준알고리즘_2742  (0) 2022.02.09
Comments