728x90
반응형
해커랭크 - https://www.hackerrank.com/
Prepare > Java > Data Structures > Java Arraylist
때로는 동적 크기 배열을 사용하는 것이 더 좋습니다. Java의 Arraylist는 이 기능을 제공할 수 있습니다. Arraylist를 사용하여 이 문제를 해결해 보십시오.
n 줄이 주어집니다. 각 줄에는 0개 이상의 정수가 있습니다. x번째 줄의 y번째 위치에 있는 숫자를 알려야 하는 몇 가지 질문에 답해야 합니다.
System.in에서 입력하십시오.
Input Format
첫 번째 줄에는 정수 n이 있습니다. 다음 n 줄 각각에는 해당 줄의 정수 수를 나타내는 정수 d가 있고 공백으로 구분된 정수 d가 있습니다. 다음 줄에는 쿼리 수를 나타내는 정수 q가 있습니다. 각 쿼리는 두 개의 정수 x와 y로 구성됩니다.
Constraints
- 1 <= n <= 20000
- 0 <= d <= 50000
- 1 <= q <= 1000
- 1 <= x <= n
각 숫자는 부호 있는 정수에 맞습니다.
n 줄에 있는 정수의 총개수는 10⁵를 넘지 않습니다.
Output Format
각 줄에서 x번째 줄의 y번째 위치에 있는 숫자를 출력합니다. 그러한 위치가 없으면 "ERROR!"를 출력하세요.
Sample Input
5
5 41 77 74 22 44
1 12
4 37 34 36 52
0
3 20 22 33
5
1 3
3 4
3 1
4 3
5 5
Sample Output
74
52
37
ERROR!
ERROR!
Explanation
아래 다이어그램은 쿼리를 설명합니다.
Code
import java.io.*;
import java.util.*;
public class Solution {
public static void main(String[] args) {
/* Enter your code here. Read input from STDIN. Print output to STDOUT. Your class should be named Solution. */
Scanner scn = new Scanner(System.in);
int n = scn.nextInt();
ArrayList<ArrayList> lines = new ArrayList<ArrayList>();
for(int i=0; i<n; i++) {
int d = scn.nextInt();
ArrayList<Integer> line = new ArrayList<Integer>();
for(int j=0; j<d; j++) line.add(scn.nextInt());
lines.add(line);
}
int q = scn.nextInt();
for(int i=0; i<q; i++) {
int x = scn.nextInt();
int y = scn.nextInt();
try {
System.out.println( lines.get(x-1).get(y-1) );
}
catch(IndexOutOfBoundsException e) {
System.out.println("ERROR!");
}
}
}
}
ArrayList 특징
1. 크기 가변성 (Dynamic Sizing) : 배열과 유사하지만 크기가 가변적. 필요에 따라 요소를 추가하거나 제거할 수 있음. 크기 조절은 자동으로 처리.
2. 제네릭 타입 (Generics) : 제네릭 클래스로 구현되어 있어, 다양한 데이터 유형을 저장. 예를 들어, ArrayList<Integer>는 정수를 저장하는 리스트. ArrayList<String>은 문자열을 저장하는 리스트.
3. 빠른 임의 접근 (Fast Random Access) : 배열로 구현되어 있으므로 임의의 요소에 빠르게 접근 가능. 인덱스를 사용하여 요소를 검색하거나 수정하는 데 효율적.
4. 요소 순회 (Element Iteration) : 반복문을 사용하여 모든 요소를 순회하는 데 적합. 루프를 활용하여 요소에 접근하고 처리 가능.
5. 자동 박싱/언박싱 (Autoboxing/Unboxing) : 기본 데이터 유형을 사용할 수 있지만 내부적으로 객체를 다루기 때문에 자동 박싱 및 언박싱이 발생할 수 있음. 기본 데이터 유형과 객체 간의 변환을 자동으로 처리.
6. 동기화 지원 (Synchronization Support) : 멀티 스레드 환경에서 사용할 때 동기화가 필요. Collections.synchronizedList() 메서드를 사용하여 동기화된 ArrayList를 생성.
7. Null 요소 허용 (Allows Null Elements) : null 값을 요소로 허용. 따라서 null 값 저장 가능.
개인 공부를 위한 포스팅입니다.
모든 번역, 코드는 완벽하지 않을 수 있습니다.
728x90
반응형
'> 개발-IT-인터넷 > > JAVA' 카테고리의 다른 글
[해커랭크(HackerRank) JAVA 풀이] - Java List (1) | 2023.10.05 |
---|---|
[해커랭크(HackerRank) JAVA 풀이] - Java 1D Array (Part 2) (0) | 2023.10.04 |
[해커랭크(HackerRank) JAVA 풀이] - Java Subarray (0) | 2023.09.26 |
[해커랭크(HackerRank) JAVA 풀이] - Java 2D Array (0) | 2023.09.25 |
[해커랭크(HackerRank) JAVA 풀이] - Java 1D Array (0) | 2023.09.23 |