알고리즘을 공부하면서 사용했던 자료구조들을 정리해보려고 합니다.

추가 사항이 생기면 업데이트 하도록 하겠습니다!


ArrayList - JAVA API

: 배열처럼 크기를 신경쓰지 않아도 되는 자료구조

  • 생성
    ArrayList<Integer> lists = new ArrayList<>();

  • 추가 (add)
    lists.add(10);  // param : index(0~)

  • 삭제 (remove)
    lists.remove(2);  // param : index(0~)

  • 반복 (for)
    for( int iValue : lists) {
        System.out.println(iValue);
    }




BufferedReader

  • 사용하는 이유
    InputStreamReader는 입력을 character로 읽어들인다. Then 문자열로 입력받으려면 불편하다.
    So 생겨난것이 BufferReader 이다.

cf> BufferedReader : InputStreamReader에 버퍼링 기능을 추가한것으로 데이터를 사용자가 요청할때마다 매번 읽어오기 보다는 일정량사이즈로 한번에 읽어온 후 버퍼에 보관한다. 그리고 사용자가 요구할때 버퍼에서 읽어오게 한다. 

결국, BufferedReader를 이용하면 속도를 향상시키고 시간의 부하를 줄일수 있게 된다.

  • 생성
BufferedReader br 
= new BufferedReader
   (new InpuStreamReader(System.in));

  • br.readLine()
    String 형태로 개행문자(엔터)까지 입력받아옴
cf> int형태로 받고 싶은면?
      Integer.parseInt(br.readLine());


StringBuilder

1
2
3
4
5
6
7
8
// 사용법 예시
StringBuilder sb = new StringBuilder();
 
while(!rst.isEmpty()){
    sb.append(rst.pop());
}
 
System.out.println(sb);
cs



Array

1
2
3
4
// 배열 
Int[][] dp = new int[col][row]     // col:5; row:2
=>    11111
      11111
cs



Queue

  • 한쪽 끝에서만 자료를 넣고 다른 한쪽 끝에서만 있는 자료구조 입니다.
  • 먼저 넣은 것이 가장 먼저 나오기 때문에 First In First Out(FIFO) 라고도 합니다.
  • 생성시에 LinkedList의 생성자를 호출한다.
  • offer : 큐에 자료를 넣는 연산
  • Poll : 큐에서 자료를 빼는 연산
  • Front : 큐의 가장 앞에 있는 자료를 보는 연산
  • Back : 큐의 가장 뒤에 있는 자료를 보는 연산
  • Empty : 큐가 비어있는지 아닌지를 알아보는 연산
  • Size : 큐에 저장되어있는 자료의 개수를 알아보는 연산
  • Java 경우에는 java.util.Queue 사용하는 것이 좋다.


+ Recent posts