이 알고리즘 문제는 인프런의 자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비 (김태원)의 문제입니다.


문제 설명

 

코드

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

public class sec02_01 {
    public static String solution(int N, String str) {
        String[] numArr = str.split(" ");
        StringBuilder sb = new StringBuilder();

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

        return sb.toString().trim();
    }

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.parseInt(br.readLine());
        String input = br.readLine();
        System.out.println(solution(N, input));
    }
}

 

설명

  • String.split(" ")을 사용하여 입력 문자열을 배열로 변환한다.
  • 첫 번째 숫자는 무조건 결과에 포함되므로 StringBuilder에 미리 추가한다.
  • 두 번째 숫자부터 반복문을 돌면서 앞의 숫자보다 큰 경우에만 StringBuilder에 추가한다.
  • 마지막에 trim()을 호출하여 불필요한 공백을 제거한다.