티스토리 뷰

반응형

 

문제

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()를 사용한 첫번째 풀이가 상대적으로 시간이 오래걸렸다.

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

 

 

 

 

 

반응형

'Java > Coding Test' 카테고리의 다른 글

[코딩테스트] 가위 바위 보  (0) 2022.03.02
[코딩테스트] 보이는 학생  (0) 2022.03.02
[코딩테스트] 암호  (0) 2022.02.28
[코딩테스트] 문자열 압축  (0) 2022.02.27
[코딩테스트] 가장 짧은 문자거리  (0) 2022.02.27
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함