코딩테스트
[배열] 2. 보이는 학생
개발하는지호
2023. 12. 10. 19:17
2. 보이는 학생
설명
선생님이 N명의 학생을 일렬로 세웠습니다. 일렬로 서 있는 학생의 키가 앞에서부터 순서대로 주어질 때, 맨 앞에 서 있는
선생님이 볼 수 있는 학생의 수를 구하는 프로그램을 작성하세요. (앞에 서 있는 사람들보다 크면 보이고, 작거나 같으면 보이지 않습니다.)
입력
첫 줄에 정수 N(5<=N<=100,000)이 입력된다. 그 다음줄에 N명의 학생의 키가 앞에서부터 순서대로 주어진다.
출력
선생님이 볼 수 있는 최대학생수를 출력한다.
예시 입력 1
8
130 135 148 140 145 150 150 153
예시 출력 1
5
<<풀이>>
-본인-
우선 나의 풀이다. 이 문제는 정말 쉽게 푼거 같다. 하지만 강의 듣기 전이라 ㅋㅋ 긴장의 끈을 놓칠 수 없다.
import java.util.Scanner;
class Main {
public int solution(int[] arr) {
int count = 1;
int max = arr[0];
for (int i = 0; i < arr.length - 1; i++) {
if (arr[i + 1] > max ) {
count++;
max = arr[i + 1];
}
}
return count;
}
public static void main(String[] args) {
Main T = new Main();
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int[] arr = new int[n];
for (int i = 0; i < n; i++) {
int height = in.nextInt();
arr[i] = height;
}
System.out.println(T.solution(arr));
}
}
우선 max 값을 초기화 하고 이전 키보다 크면 max가 되게 하여 그 다음 값과 비교하여 count 가 증가할 수 있게끔 구성했다.
-강사님-
오늘은 안 적겠다 ㅋㅋ 강사님 풀이랑 나의 풀이랑 같다 ㅎㅎ 물론 쉬운 문제였지만 매번 달랐던 사고의 흐림이 오늘은 똑같다는게 신기하다 ㅋㅋ
<<추가 공부>>
int min = Integer.MAX_VALUE;
int max = Integer.MIN_VALUE;
이번 문제에는 크게 필요는 없지만 최대 최소구할 때 이를 활용해서 사용하기도 한다.