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

백준알고리즘_2460 본문

Algorism

백준알고리즘_2460

자라나라나무나무나 2022. 1. 19. 14:08


이 기차는 다음 조건을 만족하면서 운행된다고 가정한다.

  1. 기차는 역 번호 순서대로 운행한다.  → 기차역은 10개
  2. 출발역에서 내린 사람 수와 종착역에서 탄 사람 수는 0이다. → 표 순서대로 -(빼고) +(더한다)
  3. 각 역에서 현재 기차에 있는 사람보다 더 많은 사람이 내리는 경우는 없다.
  4. 기차의 정원은 최대 10,000명이고, 정원을 초과하여 타는 경우는 없다.

각 역에서 내린 사람 수와 탄 사람 수가 빈칸을 사이에 두고 첫째 줄부터 열 번째 줄까지 역 순서대로 한 줄에 하나씩 주어진다. → 빈칸을 기준으로 내린사람의 수와 탄 사람의 수를 구분한다.

 

▶ 반복문을 10번 돌릴 것이다.

▶ 빈 배열을 만들고 배열 안에 각 역마다 최종으로 남아있는 승객의 수를 넣을 것이다.

▶ 총 10개를 비교해서 최종으로 기차에 사람이 제일 많은 수를 뽑아낸다.


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

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

        // Scanner를 이용하여 사용자에게 값을 입력 받는다.
        // Scanner a = new Scanner(System.in);

        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));

        int total = 0;
        int[] train = new int[10]; // train이라는 배열을 10크기로 하겠다.

        for (int i = 0; i < 10; i++) {

            // 띄어쓰기(공백) 기준으로 문자열 분리
            StringTokenizer st = new StringTokenizer(bf.readLine(), " ");

            // StringTokenizer는 int로 변환 해주어야 한다.
            int a = Integer.parseInt(st.nextToken()); // 내린사람
            int b = Integer.parseInt(st.nextToken()); // 탄사람

            // += 계속 더해주면서 값을 바꾸기
            total += -a + b;
            // train의 [i]번째는 곧 total이다.
            train[i] = total;
        }
        int Max = Arrays.stream(train).max().getAsInt();
        System.out.println(Max);

        bf.close();
        
        ======================================================

        int max = train[0];

        for (int num : train) {
            if (num > max) {
                max = num;
            }
        }
        System.out.println(max);

        bf.close();
        
        ======================================================

        // Array 클래스의 sort(정렬)을 활용한 방법
        Arrays.sort(train); // 배열 정렬

        // 최대값 출력
        System.out.println(train[train.length - 1]);

        bf.close();

    }
}

위에서 부터 순서대로 사용된 메모리와 시간

시간은 for 반복문 사용이 제일 짧았고, 메모리는 stream 메소드를 사용한것이 적었다.

 

 

'Algorism' 카테고리의 다른 글

백준알고리즘_2742  (0) 2022.02.09
백준알고리즘_9316  (0) 2022.02.09
백준알고리즘_2609  (0) 2022.02.09
백준알고리즘_10870  (0) 2022.01.23
백준 알고리즘_1000  (0) 2022.01.16
Comments