본문 바로가기

코딩테스트/자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비

섹션 2. Array - 1. 큰 수 출력하기

📌 문제 설명

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

  • 첫 번째 수는 무조건 출력합니다.
  • 입력되는 숫자의 개수 N은 1 이상 100 이하입니다.

📝 입력 & 출력

🔹 입력

  • 첫 번째 줄: 자연수 N (1 ≤ N ≤ 100)
  • 두 번째 줄: N개의 정수

🔹 출력

  • 한 줄에 자신의 바로 앞 수보다 큰 수만 출력 (첫 번째 수는 무조건 출력)

🔸 예제 입력 1

6
7 3 9 5 6 12

🔸 예제 출력 1

7 9 6 12

💡 해결 방법

  1. 첫 번째 수는 무조건 출력
  2. 두 번째 수부터 앞의 수와 비교하여 큰 경우만 출력
    • arr[i-1] < arr[i]이면 arr[i]를 출력 리스트에 추가

💻 코드 구현 (Java)

package partArray;

import java.util.*;

public class Problem1 {
	public ArrayList<Integer> solution(int n, int[] arr){
		ArrayList<Integer> result = new ArrayList<>();
		result.add(arr[0]);
		for(int i=1; i<n; i++) {
			if(arr[i-1] < arr[i]) result.add(arr[i]);
		}
		
		return result;
	}

	public static void main(String[] args) {
		Problem1 T = new Problem1();
		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 + " ");
		}
		kb.close();
	}

}

📖 코드 설명

1️⃣ 첫 번째 수는 무조건 출력

result.add(arr[0]);
  • ✅ 문제에서 첫 번째 숫자는 무조건 출력해야 함
  • ✅ 결과 리스트에 첫 번째 값을 미리 추가

2️⃣ 앞의 수와 비교하여 큰 경우만 추가

for(int i = 1; i < n; i++) {
	if(arr[i - 1] < arr[i]) result.add(arr[i]);
}
  • arr[i-1] < arr[i]앞의 숫자보다 크다면 리스트에 추가
  • result.add(arr[i]); → 리스트에 추가하여 최종 결과 생성

⏳ 시간 복잡도 분석

  • O(n) (n: 입력된 숫자의 개수)
  • 배열을 한 번만 순회하면서 비교하므로 선형 시간 복잡도

출처: 인프런 자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비

 

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

김태원 | , 자바(Java) 알고리즘 문제풀이 채점사이트를 통해 기초부터 준비해보세요! 💪 [사진] 이 강의는 [사진] 자바(Java)로 코딩테스트 준비를 하고 계신 분께 추천드려요! 문제는 기초~ 중급

www.inflearn.com