보이는 학생

최준호·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);
    }
}

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

0개의 댓글

관련 채용 정보