보이는 학생

최준호·2021년 8월 5일
0

알고리즘 강의

목록 보기
10/79

설명

선생님이 N명의 학생을 일렬로 세웠습니다. 일렬로 서 있는 학생의 키가 앞에서부터 순서대로 주어질 때, 맨 앞에 서 있는

선생님이 볼 수 있는 학생의 수를 구하는 프로그램을 작성하세요. (앞에 서 있는 사람들보다 크면 보이고, 작거나 같으면 보이지 않습니다.)

코드

public class StudentWhoSee {
    public static void main(String[] args){
        Scanner in=new Scanner(System.in);
        int leng = in.nextInt();
        int[] arr = new int[leng];
        for(int i=0; i<leng; i++){
            int input = in.nextInt();
            arr[i] = input;
        }
        //int[] arr = {160, 135, 148, 140, 145, 150, 150, 153};
        solution(arr);
    }

    public static void solution(int[] arr){
        int length = arr.length;
        int[] arr2 = new int[length+1];
        for(int i=0; i<length; i++){
            arr2[i] = arr[i];
        }
        arr2[length] = 0;

        int cnt = 1;
        int p = arr2[0];
        //전체를 탐색하면서 뒤 번호가 앞번호보다 큰지 확인
        for(int i=1; i<arr2.length; i++){
            int su = arr2[i];
            if(p<su){
                p = su;
                cnt++;
            }
        }

        System.out.println(cnt);
    }
}

이전 문제와 거의 비슷한 방식의 문제이며 한가지 다른 점은 비교 대상이 이전 문제와 다르게 최댓값을 갖고 비교하는 문제였다. 최댓값을 변수에 저장하고 계속해서 비교하는 쉬운 문제다.

profile
코딩을 깔끔하게 하고 싶어하는 초보 개발자 (편하게 글을 쓰기위해 반말체를 사용하고 있습니다! 양해 부탁드려요!) 현재 KakaoVX 근무중입니다!

0개의 댓글