본문 바로가기

Java/Java 알고리즘 인프런

[Ch.02 - Array] 01. 큰 수 출력하기

반응형
1. 큰 수 출력하기
 

설명

N개의 정수를 입력받아, 자신의 바로 앞 수보다 큰 수만 출력하는 프로그램을 작성하세요.

(첫 번째 수는 무조건 출력한다)

입력 

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

출력 

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

 

예시 입력 1 

6
7 3 9 5 6 12

예시 출력 1

7 9 6 12

 

import java.util.Scanner;
  
public class Main {
   static Scanner kb=new Scanner(System.in);

  public void solution(int[] arr){
	for(int i=0;i<arr.length;i++){
      arr[i]=kb.nextInt();
  	if(i==0 ||i!=0&& arr[i]>arr[i-1]){
        System.out.print(arr[i]+" ");
      }else if(i==arr.length-1&&arr[i]>arr[i-1]){
        System.out.print(arr[i]);
      }
    }
    
  }
  public static void main(String[] args){
    Main T =new Main();
    int n = kb.nextInt();
    int [] arr= new int[n];
    
     T.solution(arr);
    
  }
}

 

import java.util.Scanner;
  
public class Main {
  public void solution(int[] arr){
    System.out.print(arr[0]+" ");
   for(int i=1;i<arr.length;i++)
     if(arr[i]>arr[i-1])
     System.out.print(arr[i]+" ");
  }
  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);
  }
}

 

import java.util.*;
  
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();
    }
    for(int x: solution(arr)) System.out.print(x+" ");
  }
  static List<Integer> solution(int[] arr){
    ArrayList<Integer> list = new ArrayList<>();
    list.add(arr[0]);
    int tmp=arr[0];
    for(int i=1;i<arr.length;i++){
      if(tmp<arr[i])
        list.add(arr[i]);
      tmp=arr[i];
    }
    return list;
  }
}

 

1. int tmp=0으로 설정해, 0보다 크면 리스트에 삽입

2. 배열을 처음부터 비교하는데, 삽입하고, 해당 배열 값을 tmp에 저장

 

import java.util.*;
  
public class Main {
  public static void main(String[] args){
    Scanner in=new Scanner(System.in);
    int n = in.nextInt();
    int[] arr = new int[n];
    for(int i=0;i<n;i++){
      arr[i]=in.nextInt();
    }
	solution(n,arr);
  }
  static void solution(int n, int[]arr){
    ArrayList<Integer> list = new ArrayList<>();
    int tmp=0;
    for(int i=0;i<n;i++){
      
      if(tmp<arr[i])
        list.add(arr[i]);
      tmp=arr[i];
    }
    for(int x: list) System.out.print(x+" ");
  }
}

 

+) 세련된 풀이

import java.util.*;

class Main {
	public ArrayList<Integer> solution(int n, int[] arr) {
		ArrayList<Integer> 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 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();
		}
		for (int x : T.solution(n, arr)) {
			System.out.print(x + " ");
		}
	}
}

 

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 tmp=Integer.MIN_VALUE;
    for(int i=0;i<n;i++){
      arr[i]=in.nextInt();
      if(arr[i]>tmp) System.out.print(arr[i]+" ");
      tmp=arr[i];
    }
  }
}
반응형