(Array)큰 수 출력/보이는 학생

-·2023년 12월 11일
0

Inflearn-basicTest

목록 보기
7/27

큰 수 출력

✏️ 문제

* 설명
N개의 정수를 입력받아, 자신의 바로 앞 수보다 큰 수만 출력하는 프로그램을 작성하세요.
(첫 번째 수는 무조건 출력한다)

* 입력
첫 줄에 자연수 N(1<=N<=100)이 주어지고, 그 다음 줄에 N개의 정수가 입력된다.

* 출력
자신의 바로 앞 수보다 큰 수만 한 줄로 출력한다.

🔍풀이

public ArrayList<Integer> solutio(int[] arr, int n){
	ArrayList answer = new ArrayList();
    answer.add(arr[0])
    for(int i = 1; i < n; i++){
    	if(arr[i] > arr[i-1]) answer.add(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++){
    	int[i] = nextInt();
    }
    for(int x : main.solution(arr, n){
    	System.out.print(x + " ");
    }
}

💡팁

주의사항
i+1 하는 식에서는 i+1이 bound를 벗어나는지 항상 확인해야한다.
List.get()메소드는 Object로 나오기 때문에 비교식이 되지 않는다. 
(Integer)로 다운캐스팅해 주어야 한다.

보이는 학생

✏️ 문제

* 설명
선생님이 N명의 학생을 일렬로 세웠습니다. 
일렬로 서 있는 학생의 키가 앞에서부터 순서대로 주어질 때, 맨 앞에 서 있는
선생님이 볼 수 있는 학생의 수를 구하는 프로그램을 작성하세요. 
(앞에 서 있는 사람들보다 크면 보이고, 작거나 같으면 보이지 않습니다.)

* 입력
첫 줄에 정수 N(5<=N<=100,000)이 입력된다. 그 다음줄에 N명의 학생의 키가 앞에서부터 순서대로 주어진다.

* 출력
선생님이 볼 수 있는 최대학생수를 출력한다.

🔍풀이

public int solution(int n, int[] arr) {
    int answer = 0;
    int highest = 0;
    for(int i = 0; i < n; i++){
        if(highest < arr[i]){
            highest = arr[i];
            answer++;
        }
    }
    return answer;
}
profile
신입 개발자의 개인 공부 공간입니다

0개의 댓글