오늘보다 더 나은 내일의 나에게_

자바 알고리즘 문제 풀이 Array Q02_보이는 학생 본문

ALGORITHM/inflearn_javaAlgorithm

자바 알고리즘 문제 풀이 Array Q02_보이는 학생

chan_96 2022. 2. 9. 22:59
728x90
설명

선생님이 N명의 학생을 일렬로 세웠습니다. 일렬로 서 있는 학생의 키가 앞에서부터 순서대로 주어질 때, 맨 앞에 서 있는

선생님이 볼 수 있는 학생의 수를 구하는 프로그램을 작성하세요. (앞에 서 있는 사람들보다 크면 보이고, 작거나 같으면 보이지 않습니다.)


입력

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


출력

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

 


예시 입력1


예시 출력

8
130 135 148 140 145 150 150 153
5

 

코드

내가 입력한 코드

package Array;

import java.util.Scanner;

public class Q02 {
	public int solution(int[] arr) {
		int answer = 1;
		
		for (int i = 1; i < arr.length; i++) {
			boolean c = true;
			for(int j = 0;j < i;j++) {
				if(arr[i]<=arr[j]) {
					c = false;
					break;
				}
			}	
			
			if(c) {
				answer++;
			}
		}
		return answer;
	}
	
	public static void main(String[] args) {
		Q02 T = new Q02();
		Scanner kb = new Scanner(System.in);
		int num = kb.nextInt();
		int[] arr = new int[num];
		
		for (int i = 0; i < num; i++) {
			arr[i] = kb.nextInt();
		}
		System.out.println(T.solution(arr));
	}
}

 




해설 코드

import java.util.*;
class Main {	
	public int solution(int n, int[] arr){
		int answer=1, max=arr[0];
		for(int i=1; i<n; i++){
			if(arr[i]>max){
				max=arr[i];
				answer++;
			}
		}
		return answer;
	}
	public static void main(String[] args){
		Main T = new Main();
		Scanner kb = new Scanner(System.in);
		int n=kb.nextInt();
		int[] arr=new int[n];
		for(int i=0; i<n; i++){
			arr[i]=kb.nextInt();
		}
		System.out.print(T.solution(n, arr));
	}
}

 

 

풀이 및 정리 

int 배열의 첫번째 학생은 무조건 보이니 answer 초기값은 1이다.
max라는 임의의 변수를 선언하고 arr첫번째 인덱스값으로 초기화 시켜준다.

반복문에서 arr과 max값을 비교하고 arr[i]값이 max보다 크면 answer값을 1씩 증가시키고
max에 arr[i]값을 대입시켜준다.
728x90
Comments