ezhoon

[인프런] 02_01 큰 수 출력하기 본문

[Java] 인프런 문제풀이/Array(배열)

[인프런] 02_01 큰 수 출력하기

ezhoon 2022. 1. 21. 09:40

문제


  1. N개의 정수를 입력받아 자신의 바로 앞 수보다 큰 수만 출력
  2. 첫 번째 수는 무조건 출력

출력 예시

 

이해


  • 첫 번째 수는 무조건 출력이므로 for문의 시작은 1부터 하면 될 것 같다.
  • 배열[N] > 배열[N-1] 일 때만 append 해준 뒤 sb.toString으로 return 해주면 된다.

 

⚠️ 주의사항


  • 자신의 바로 앞 수보다 큰 수를 출력하지만 첫 번째 수는 무조건 출력이므로 for문 시작을 어떻게 해야 할지 주의해야 한다.

 

풀이


1. 제가 직접 풀어 본 풀이입니다. StringBuilder 사용해서 조건이 부합하는 경우에만 append 해준 뒤 sb.toString으로 return 해줍니다.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Java_02_01_1 {

    public String solution(int N, int[] arr) {

        StringBuilder sb = new StringBuilder();
        sb.append(arr[0]).append(" ");

        for (int i = 1; i < N; i++) {;
            if (arr[i] > arr[i - 1]) {
                sb.append(arr[i]).append(" ");
            }
        }

        return sb.toString();
    }

    public static void main(String[] args) throws IOException {
        Java_02_01_2 T = new Java_02_01_2();

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int N = Integer.parseInt(br.readLine());
        String str = br.readLine();

        int[] temp = new int[N];

        StringTokenizer st = new StringTokenizer(str, " ");
        for (int i = 0; i < N; i++) {
            temp[i] = Integer.parseInt(st.nextToken());
        }

        System.out.println(T.solution(N, temp));

    }
}

 


2. ArrayList를 이용한 풀이입니다. 조건에 부합하는 경우에만 add 해준 뒤 출력합니다.

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.StringTokenizer;

public class Java_02_01_2 {

    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) throws IOException {
        Java_02_01_2 T = new Java_02_01_2();

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int N = Integer.parseInt(br.readLine());
        String str = br.readLine();

        int[] temp = new int[N];

        StringTokenizer st = new StringTokenizer(str, " ");
        for (int i = 0; i < N; i++) {
            temp[i] = Integer.parseInt(st.nextToken());
        }

        for (int x : T.solution(N, temp)) {
            System.out.print(x + " ");
        }

    }
}

출력화면

Comments