Java/Coding Test

[코딩테스트] 큰 수 출력하기

Jane Kwon 2022. 3. 2. 17:18
반응형

 

문제

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

 

입력

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

 

출력

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

 

 

 

예시 입력

6
7 3 9 5 6 12

예시 출력

7 9 6 12

 

 

 

 

 

문제 풀이

 

[첫번째 풀이]

import java.util.Scanner;
  
public class Main {
  public String solution(int count, String[] numbers) {
    String result = "";
    for (int i=0; i<count; i++) {
      if (i == 0) {
        result += numbers[i];
        continue;
      }

      int n = Integer.parseInt(numbers[i - 1]);
      int m = Integer.parseInt(numbers[i]);

      if (n < m) {
        result += " " + numbers[i];
      }
    }
    return result;
  }
  
  public static void main(String[] args){
    Scanner scanner = new Scanner(System.in);
    int count = Integer.parseInt(scanner.nextLine());
    String[] numbers = scanner.nextLine().split(" ");
    
    Main main = new Main();
    System.out.println(main.solution(count, numbers));
  }
}

(Time 156ms / Memory 27MB)

 

[두번째 풀이]

import java.util.Scanner;
  
public class Main {
  public String solution(int count, String[] numbers) {
    String result = "";
    for (int i=0; i<count; i++) {
      if (i == 0) {
        result += numbers[i];
        continue;
      }

      int n = Integer.valueOf(numbers[i - 1]);
      int m = Integer.valueOf(numbers[i]);

      if (n < m) {
        result += " " + numbers[i];
      }
    }
    return result;
  }
  
  public static void main(String[] args){
    Scanner scanner = new Scanner(System.in);
    int count = Integer.valueOf(scanner.nextLine());
    String[] numbers = scanner.nextLine().split(" ");
    
    Main main = new Main();
    System.out.println(main.solution(count, numbers));
  }
}

(Time 148ms / Memory 27MB)

 

[세번째 풀이]

import java.util.Scanner;
  
public class Main {
  public String solution(int count, String[] numbers) {
    String result = "";
    for (int i=0; i<count; i++) {
      if (i == 0) {
        result += numbers[i];
        continue;
      }

      int n = Integer.decode(numbers[i - 1]);
      int m = Integer.decode(numbers[i]);

      if (n < m) {
        result += " " + numbers[i];
      }
    }
    return result;
  }
  
  public static void main(String[] args){
    Scanner scanner = new Scanner(System.in);
    int count = Integer.decode(scanner.nextLine());
    String[] numbers = scanner.nextLine().split(" ");
    
    Main main = new Main();
    System.out.println(main.solution(count, numbers));
  }
}

(Time 149ms / Memory 27MB)

 

[네번째 풀이]

import java.util.ArrayList;
import java.util.Scanner;

public class Main {
    public ArrayList<Integer> solution(int[] numbers) {
        ArrayList<Integer> result = new ArrayList<>();
        for (int i=0; i<numbers.length; i++) {
            if (i == 0 || numbers[i - 1] < numbers[i]) {
                result.add(numbers[i]);
            }
        }
        return result;
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int count = scanner.nextInt();
        int[] numbers = new int[count];

        for (int i=0; i<count; i++) {
            numbers[i] = scanner.nextInt();
        }

        Main main = new Main();
        for (Integer i : main.solution(numbers)) {
            System.out.print(i + " ");
        }
    }
}

(Time 161ms / Memory 27MB)

 

 

 

- 첫번째 풀이는 Integer.parseInt()를, 두번째 풀이는 Integer.valueOf()를, 세번째 풀이에서는 Integer.decode()를 이용해 String을 Int로 변환하였다.

- parseInt()를 사용한 첫번째 풀이가 상대적으로 시간이 오래걸렸다.

- 네번째 풀이는 풀이 영상을 보고 따라 해봤다.

 

 

 

 

 

반응형