📌 문제 설명
N개의 정수를 입력받아, 자신의 바로 앞 수보다 큰 수만 출력하는 프로그램을 작성하세요.
- 첫 번째 수는 무조건 출력합니다.
- 입력되는 숫자의 개수 N은 1 이상 100 이하입니다.
📝 입력 & 출력
🔹 입력
- 첫 번째 줄: 자연수 N (1 ≤ N ≤ 100)
- 두 번째 줄: N개의 정수
🔹 출력
- 한 줄에 자신의 바로 앞 수보다 큰 수만 출력 (첫 번째 수는 무조건 출력)
🔸 예제 입력 1
6
7 3 9 5 6 12
🔸 예제 출력 1
7 9 6 12
💡 해결 방법
- 첫 번째 수는 무조건 출력
- 두 번째 수부터 앞의 수와 비교하여 큰 경우만 출력
- 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
'코딩테스트 > 자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비' 카테고리의 다른 글
| 섹션 2. Array - 3. 가위 바위 보 (1) | 2025.03.21 |
|---|---|
| 섹션 2. Array - 2. 보이는 학생 (0) | 2025.03.21 |
| 섹션 1. 문자열 - 12. 암호 (0) | 2025.03.18 |
| 섹션 1. 문자열 - 11. 문자열 압축 (0) | 2025.03.18 |
| 섹션1. 문자열 - 10. 가장 짧은 문자 거리 (0) | 2025.03.18 |