Notice
Recent Posts
Recent Comments
Link
개발자는 기록이 답이다
자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비(Array_큰 수 출력하기) 본문
알고리즘/인프런 - Java알고리즘 입문
자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비(Array_큰 수 출력하기)
slow-walker 2023. 9. 4. 09:54
https://cote.inflearn.com/contest/10/problem/02-01
(위의 링크는 인프런 로그인 후, 해당 강의를 사지 않으면 접속이 되지 않습니다)
1. 큰 수 출력하기
예시 입력 1
6
7 3 9 5 6 12
예시 출력 1
7 9 6 12
내가 푼 풀이(Time: 165ms Memory: 27MB)
처음에 문제를 잘 못 읽어서 첫 줄 입력값보다 2번째 줄 입력배열중에 큰 수를 찾는 것 인 줄 알았다.
그게 아니라 첫 줄은 2번째 줄의 길이를 말하는 것이었다.
입출력에 대한 타입이 정해지지 않으니까 어떤걸로 정의해야할지 헷갈렸다.
문제를 제대로 읽어야겠다.
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public ArrayList<Integer> solution(int num, int[] array) {
ArrayList<Integer> list = new ArrayList<>();
// 첫 번째수 무조건 출력
list.add(array[0]);
for (int i = 1; i < num; i++) {
if (array[i] >= array[i-1]) {
list.add(array[i]);
}
}
return list;
}
public static void main(String[] args) {
Main T = new Main();
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
int[] array = new int[num];
for (int i = 0; i < num; i++) {
array[i] = sc.nextInt();
}
for (int ans : T.solution(num, array)) {
System.out.print(ans + " ");
}
}
}
궁금증 : ArrayList<Integer> list = new ArrayList<>(); VS List<Integer> list = new ArrayList<>();
- 타입 선언:
- 첫 번째 예제에서는 ArrayList<Integer>을 사용하여 변수 list를 선언하고 초기화합니다. 이는 변수 list가 ArrayList 클래스의 인스턴스임을 명시적으로 나타냅니다. 이것은 구체적인 클래스 타입에 의존하는 것이며, 나중에 코드를 변경할 때 다른 리스트 구현으로 전환하기 어렵게 만들 수 있습니다.
- 두 번째 예제에서는 List<Integer>을 사용하여 변수 list를 선언하고 초기화합니다. 이것은 변수 list가 리스트 인터페이스 (List)의 인스턴스임을 나타냅니다. 이것은 코드를 더 유연하게 만들어주며, 나중에 필요한 경우 다른 리스트 구현체 (예: LinkedList)로 쉽게 변경할 수 있습니다. 이것은 자바의 다형성 원칙을 따르는 것이며, 인터페이스를 사용하여 프로그램을 더 추상화하고 유지보수를 용이하게 합니다.
- 사용 가능한 메서드:
- 첫 번째 예제의 경우 list 변수에는 ArrayList 클래스의 모든 메서드가 직접적으로 사용 가능합니다. 이것은 ArrayList의 특별한 기능을 활용할 수 있게 해줍니다.
- 두 번째 예제의 경우 list 변수에는 List 인터페이스에서 정의된 메서드만 사용 가능합니다. 이는 List 인터페이스에서 정의된 메서드만 사용할 수 있으며, ArrayList의 특별한 메서드는 직접 사용할 수 없습니다. 이것은 코드가 인터페이스에 의존하고, 다른 리스트 구현으로 교체하기 쉬워지는 장점을 제공합니다.
일반적으로 가능하면 변수를 인터페이스 타입으로 선언하는 것이 좋습니다. 이렇게 하면 코드가 더 유연해지며, 나중에 변경 및 확장이 쉬워집니다. 따라서 List<Integer> list = new ArrayList<>();와 같이 선언하는 것이 권장됩니다.
'알고리즘 > 인프런 - Java알고리즘 입문' 카테고리의 다른 글
자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비(Array_가위바위보) (0) | 2023.09.04 |
---|---|
자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비(Array_보이는 학생) (0) | 2023.09.04 |
자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비(문자열_암호) (0) | 2023.08.29 |
자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비(문자열_문자열 압축) (0) | 2023.08.28 |
자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비(문자열_가장 짧은 문자거리) (0) | 2023.08.28 |