ezhoon

[인프런] 02_02 보이는 학생 본문

[Java] 인프런 문제풀이/Array(배열)

[인프런] 02_02 보이는 학생

ezhoon 2022. 1. 21. 09:49

문제


  1. N 명의 학생이 일렬로 서있다.
  2. 맨 앞에 서 잇는 선생님이 볼 수 있는 학생의 수를 구하시오 (앞에 서 있는 사람들보다 크면 보이고, 작거나 같으면 보이지 않는다.

출력 예시

 

이해


  • N 명의 학생을 입력 받는다.
  • 첫 번째 학생은 무조건 보이므로 cnt를 0이 아닌 1부터 시작한다
  • max = 배열[0] 
    • temp[i] > max -> 선생님한테 보이는 학생 이므로 cnt++, max = temp[i] 해준다.

 

⚠️ 주의사항


  • 맨 앞 학생은 무조건 보인다는 것 
  • 더 큰 학생이 나올 때마다 값 갱신 해줄 것

 

풀이


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

public class Java_02_02 {

    public int solution(int N, int[] temp) {

        int cnt = 1; // 맨 앞 학생은 무조건 보이므로 0이 아닌 1

        int max = temp[0]; // 맨 앞 학생을 제일 크다고 예시로 만들어둔다.
        for (int i = 1; i < N; i++) {
            if (temp[i] > max) { // max의 값 보다 temp[i] 값이 더 클 경우 선생님 기준에서 보이는 학생이다.
                max = temp[i];
                cnt++;
            } // else 즉 temp[i] < max 인 경우 뒤에 학생이 앞에 학생보다 키가 작다는 말이므로 보이지 않는 학생이므로 아무런 작업을 할 필요가 없다.
        }
        return cnt;
    }

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

        Java_02_02 T = new Java_02_02();

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

        int N = Integer.parseInt(br.readLine()); // 학생 수
        int[] temp = new int[N]; // 학생의 키를 배열로 받기

        StringTokenizer st = new StringTokenizer(br.readLine(), " "); // 공백으로 구분해서 토큰 저장

        for (int i = 0; i < N; i++) { // 토큰에 저장 돼 있는 값들 temp 에 저장
            temp[i] = Integer.parseInt(st.nextToken());
        }

        System.out.println(T.solution(N, temp));
    }
}

출력화면

Comments