ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [JAVA] 알고리즘 문제 - 보이는 학생
    Java 알고리즘 문제/자바(Java) 알고리즘 문제풀이 입문 2023. 8. 9. 10:33
    반응형

    보이는 학생

     

    설명

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

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

     

    입력

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

     

    출력

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

     

    예시입력

    8
    130 135 148 140 145 150 150 153

     

    예시 출력

    5

     

     

    import java.util.Scanner;
    
    public class Main {
     
    	public int test(int n, int[] arr) {
    		int answer = 1;
    		int max = arr[0];
    		
    		for(int i=0; i<arr.length; i++) {
    			
    			if(max < arr[i]) {
    				answer +=1;
    				max = arr[i];
    			}
    		}
    		
    		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.println(t.test(n, arr));
        }
    }

     

    학생들을 일렬로 세워뒀을때 맨앞에서 선생님이 보았을때 다음 i학생이 i+1학생보다 키가 크면 i+1학생이 보이고

    키가 같거나 작다면 i+1 학생이 보이지 않는문제이다.

     

    	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.println(t.test(n, arr));
        }
    8
    130 135 148 140 145 150 150 153

    예시에서 8명의 학생이 있고 그 뒤에는 학생들의 키를 입력받는다. 

     

     

    	public int test(int n, int[] arr) {
    		int answer = 1;
    		int max = arr[0];
    		
    		for(int i=0; i<arr.length; i++) {
    			
    			if(max < arr[i]) {
    				answer +=1;
    				max = arr[i];
    			}
    		}
    		
    		return answer;
    
    	}

    키가 같은지 작은지를 판별하기 위해 max값을 설정하고 순서대로 봤을때 키가 크든 작든 첫학생은 무조건 보이니 

    answer = 1로 설정해두었다.

     

    입력받은 배열을 for문을 돈다. 우선 max의 값은 첫번재 학생으로 설정해두었고

    만약 for문을 돌면서 i번째 학생이 0번째 학생보다 크다면 max의 값을 arr[i]값으로 바뀌며 보이는 학생 수 (answer)  +1을 해주어 손 쉽게 문제 해결이 가능하다. 

    (같은 경우에는 카운팅 하지 않습니다)

    반응형

    댓글

Designed by Tistory.