본문 바로가기

Java/Java 알고리즘 인프런

[Ch.02 - Array] 02. 보이는 학생

반응형

 

2. 보이는 학생
 

설명

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

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

입력 

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

출력 

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

 

예시 입력 1 

8
130 135 148 140 145 150 150 153

예시 출력 1

5

 


import java.util.Scanner;
  
public class Main {
  public static void main(String[] args){
    Scanner kb=new Scanner(System.in);
    int n = kb.nextInt();
    int [] arr = new int[n];
    int answer=1;
    int tmp=0;
    int tmp2=0;
    for(int i=0;i<n;i++){
      arr[i]=kb.nextInt();
      
    }
    tmp=arr[0];
    for(int i=0;i<n;i++){
      if(tmp<arr[i]){
        answer++;
        tmp=arr[i];
      }
    }
    
   
      
    System.out.println(answer);   
    
    //앞에 서있는 사람보다 크면 보이고, 작거나 같으면 보이지 않는다.
    //앞 사람>뒷사람 +1, 앞사람 <=뒷사람 같으면 0으로 초기화
   
  }
}

 

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

 

import java.util.Scanner;
  
public class Main {
  public static void main(String[] args){
    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(solution(arr));
  }
  static int solution(int[] arr){
    int answer=1;
    int tmp=arr[0];
    for(int i=1;i<arr.length;i++){
      if(tmp<arr[i]) {
        answer++;
        tmp=arr[i];
      }
    }
    return answer;
  }
}

 

+) 세련된 풀이

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));
	}
}

import java.util.Scanner;
  
public class Main {
  public static void main(String[] args){
    Scanner in=new Scanner(System.in);
    int n=in.nextInt();
    int[] arr = new int[n];
    int answer=0;
    int tmp=Integer.MIN_VALUE;
    
    for(int i=0;i<n;i++){
      arr[i]=in.nextInt();
      if(arr[i]>tmp) {
        tmp=arr[i];
        answer++;
      }
    }
    System.out.println(answer);
  }
}
반응형