본문 바로가기
Computer Science/Algorithm

[Inflearn] 보이는 학생

by 코딩맛 2022. 11. 13.

인프런의 자바(Java)알고리즘 문제풀이 입문:코딩테스트 대비 강좌의 강의를 보고 문제 해설을 작성해보았습니다.

 

섹션2. Array(1,2차원 배열)의 2. 보이는 학생 강의편 입니다.

 

설명

선생님이 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 보이는_학생 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int num = sc.nextInt();
		int[] numArr = new int[num];
		for(int i=0; i< num; i++) {
			numArr[i] = sc.nextInt();
		}
		solution(num, numArr);
	}
	public static void solution(int n, int[] na) {
		
		int max = na[0];
		int ans = 1;
		for(int i=1; i<n; i++) {
			if(na[i]>max) {
				ans++;
				max = na[i];
			}
		}
		System.out.println(ans);
	}
}

>>해설

숫자를 하나 입력받고 숫자 크기의 배열을 선언한다. 그리고 배열 크기만큼 숫자를 입력 받아서 numArr에 저장한다.

solution 메서드를 호출하고

 

max값을 배열 첫번째 숫자로 초기화한다. 그리고 첫 학생은 무조건 보이기 때문에 ans는 1로 초기화한다.

반복문을 1부터 돌면서 na배열의 현재 값이 max에 담긴 값보다 큰지 확인한다.

크다면 ans값을 증가시키고 max에 현재 값을 담는다. 

 

마지막으로 ans값을 출력한다.

'Computer Science > Algorithm' 카테고리의 다른 글

[Inflearn] 피보나치 수열  (0) 2022.11.20
[Inflearn] 가위 바위 보  (0) 2022.11.13
[Inflearn] 큰 수 출력하기  (0) 2022.11.13
[Inflearn] 암호  (0) 2022.11.13
[Inflearn] 문자열 압축  (0) 2022.11.13