띠오니 개발자 성장일지
article thumbnail
반응형

 

인프런의 "자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비" 강좌를 수강했습니다.

C, C++, Python, Js 등 다른 언어의 강의도 있으니 본인에게 맞는 강의를 선택하시면 됩니다. 😁

https://inf.run/pCPH

 

자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비 - 인프런 | 강의

자바(Java)로 코딩테스트를 준비하시는 분을 위한 강좌입니다. 코딩테스트에서 가장 많이 출제되는 Top 10 Topic을 다루고 있습니다. 주제와 연동하여 기초문제부터 중급문제까지 단계적으로 구성

www.inflearn.com

 


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));
    }
}
반응형
profile

띠오니 개발자 성장일지

@띠오니

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!