본문 바로가기

CodingTest Practice

[인프런] 보이는 학생

보이는 학생

선새임이 N명의 학생을 일렬로 세웠습니다. 일렬로 서 있는 학생의 키가 앞에서부터 순서대로 주어질 때, 맨 앞에 서 있는 선생님이 볼 수 있는 학생의 수를 구하는 프로그램을 작성

 

■ 문제 풀이

1) 입력 설명
- 첫 줄에 정수 N(5<=N<=100,000)이 입력
- 그 다음줄에 N명의 학생의 키가 앞에서부터 순서대로 주어진다.
- 어떤 학생이 자기 앞에 서 있는 학생들보다 크면, 그 학생은 보이고 작거나 같으면 보이지 않는다.

2) 출력 설명
- 선생님이 볼 수 있는 최대 학생 수 출력

3) 테스트
- input :
8
130 135 148 140 145 150 150 153
- output : 
5

4) 문제 설명
- 학생의 키를 max 변수에 설정한 후, 비교를 통해 max 값이 변경될 때마다 새롭게 설정을 하면서 선생님이 볼 수 있는 학생의 수를 한명씩 더한다.

 

import java.util.Scanner;

public class Main {

    private int solution(int[] input) {
        int maxCount = 1;   //맨 첫줄에 선 학생은 선생님이 볼 수 있으므로, 초기값은 1로 설정
        int compare = input[0];
        
        for (int i = 1; i < input.length; i++) {
            if (compare < input[i]) {
                maxCount++;
                compare = input[i];
            }
        }

        return maxCount;
    }

    public static void main(String[] args) {
        Main main = new Main();

        Scanner scanner = new Scanner(System.in);
        int inputCnt = scanner.nextInt();
        int[] input = new int[inputCnt];

        for (int i = 0; i < inputCnt; i++) {
            input[i] = scanner.nextInt();
        }

        System.out.println(main.solution(input));
    }
}