반응형
인프런의 "자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비" 강좌를 수강했습니다.
C, C++, Python, Js 등 다른 언어의 강의도 있으니 본인에게 맞는 강의를 선택하시면 됩니다. 😁
Q2-02. 보이는 학생
맨 앞에 서있는 선생님이 N명의 학생을 일렬로 세웠을 때, 선생님이 볼 수 있는 학생의 수를 구하기
앞에 서 있는 학생보다 키가 크면 보이고, 작거나 같으면 보이지 않는다.
첫 째줄에는 학생의 수를, 둘 째줄에는 N명 학생의 키를 입력받는다.
예시 입력 | 예시 출력 |
8 130 135 148 140 145 150 150 153 |
5 |
✏️ 내가 쓴 답
앞의 1번 문제와 유사한 문제인 것 같았다.
우선 맨 앞의 학생은 선생님이 볼 수 있으니(비교군이 없으니) 카운팅에 반영된다.
그 뒤의 학생들부터는 앞의 학생과 키를 비교해야하는데, 바로 앞의 학생보다 크다고 해서 보이는 것이 아닌
이전까지 비교해온 학생들 중 가장 커야 선생님 눈에 보이기 때문에 가장 키큰 학생이 나올 때마다 카운팅을 해야한다.
그러면 학생 키의 최대값이 바뀔 때 마다 카운팅을 해주면 된다.
import java.util.Scanner;
public class Main {
public int solution(int n, int[] arr){
int answer = 1; // 맨 앞의 학생은 이미 보이기 때문에 1로 초기화
int max = arr[0]; // 최대값은 맨 앞의 학생의 키로 초기화
for(int i=1; i<n; i++){
if(arr[i] > max) { // 최대값보다 큰 키의 학생이 나오면 누적 +1
answer++;
max = arr[i];
}
}
return answer;
}
public static void main(String[] args) {
Main main = new Main();
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] arr = new int[n];
for(int i=0; i<n; i++) arr[i] = sc.nextInt();
System.out.println(main.solution(n, arr));
}
}
반응형
'Study > 알고리즘' 카테고리의 다른 글
[알고리즘/인프런] Array(1, 2차원 배열) #2-04. 피보나치수열 (0) | 2022.05.08 |
---|---|
[알고리즘/인프런] Array(1, 2차원 배열) #2-03. 가위바위보 (0) | 2022.05.08 |
[알고리즘/인프런] Array(1, 2차원 배열) #2-01. 큰 수 출력하기 (0) | 2022.05.08 |
[알고리즘/인프런] String(문자열) #1-12. 암호 찾기 (0) | 2022.05.02 |
[알고리즘/인프런] String(문자열) #1-11. 문자열 압축 (0) | 2022.05.02 |