김찬진의 개발 블로그

23/02/02 [Inf_0202 보이는 학생] 본문

1일1알고/Java Algorithm

23/02/02 [Inf_0202 보이는 학생]

kim chan jin 2023. 2. 2. 22:32

설명

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

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

 

입력

첫 줄에 정수 N(5<=N<=100,000)이 입력된다. 그 다음줄에 N명의 학생의 키가 앞에서부터 순서대로 주어진다.

 

출력

선생님이 볼 수 있는 최대학생수를 출력한다.

 

예시 입력 1 

8
130 135 148 140 145 150 150 153

 

예시 출력 1

5

 

코드

기억할 것

덤벙대지 말 것. 문제 잘 읽자

금방 풀긴 했지만 첫사람을 빼고 생각하는 실수, 키가 같은 사람을 카운트하는 실수를 해서 기분이 나쁨.

import java.util.Scanner;

public class Main {
    public int solution(int n, int[] ia){
        int std = ia[0]; // 첫사람부터 시작을 기준
        int cnt = 1; // 첫사람은 무조건 보이니깐 cnt=1부터 시작

        // 130 135 148 140 145 150 150 153
        for(int i=1; i<n; i++){
            if(std < ia[i]){ // 나보다 크면
                cnt++; // 카운트
                std = ia[i]; // 그걸 기준으로 정하기
            }
        }
        return cnt;
    }

    public static void main(String[] args) {
        Main m = new Main();
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();

        int[] ia = new int[n];
        for(int i=0; i<n; i++){
            ia[i] = sc.nextInt();
        }
        System.out.println(m.solution(n, ia));
    }
}

 

Comments