백기선님 자바스터디 4주차 : 제어문 2) 과제 - 대시보드, 자료구조

bongf·2021년 8월 4일
0

Java강의

목록 보기
6/18

1. 과제 1. live-study 대시 보드를 만드는 코드를 작성하세요.

  • 깃헙 이슈 1번부터 18번까지 댓글을 순회하며 댓글을 남긴 사용자를 체크 할 것.
  • 참여율을 계산하세요. 총 18회에 중에 몇 %를 참여했는지 소숫점 두자리가지 보여줄 것.
  • Github 자바 라이브러리를 사용하면 편리합니다.
  • 깃헙 API를 익명으로 호출하는데 제한이 있기 때문에 본인의 깃헙 프로젝트에 이슈를 만들고 테스트를 하시면 더 자주 테스트할 수 있습니다.

1.1. Github 자바 라이브러리를 사용하는 법

    1. 의존성 추가
    • build.gradle
    1. Personal access tokens 발급
    • 일단 github에 로그인해야 할 것인데, 로그인 하는 방법에는 여러가지가 있다.
    • 이 중 accss token 을 이용해서 접근했다.
      • 깃헙 개인 계정 - settings - Developer settings - Personal access tokens - Generate new token
      • 이 값은 한 번 밖에 보이지 않으니 잘 저장해두자

2-1. 과제 2. LinkedList에 대해 공부하세요.

  • 주로 geeksforgeeks를 통해 학습했다.

1. 배열의 단점을 보완하기 위해 고안된 LinkedList

  • 배열에서 데이터는 연속적으로 존재
  • LinkedList에서는 불연속적으로 존재하는 데이터가 연결(link)된 형태로 구성되어 있다.
  • 그림 출처 : https://medium.com/@yk392/what-is-a-linked-list-linked-list-vs-array-92f0db4015cc
  • 배열과 비교했을 때 장점 :
    • 배열에 비해 크기 변경, 삽입, 삭제가 용이하다
  • 배열과 비교했을 때 단점 :
    • 다음 노드를 가리키는 pointer에 대한 추가적인 메모리 필요
    • 순차적으로 접근해야 하기 때문에 binary search 같은 랜덤 접근 불가
    • 데이터에 연속적으로(x1->x2->x3...)으로 접근할 때는 배열이 더 빠르다.

2. 특징

  • first node를 가리키는 head가 있다.

    • LinkedList가 null이면 head는 null이다.
  • LinkedList의 각 요소를 node라고 한다.

    • node는 자신의 데이터값과 자신 다음에 오는 데이터값에 대한 포인터를 갖고 있다.
    
    class LinkedList {
       Node head; // head of the list
    
      /* Linked list Node*/
      class Node {
          int data;
          Node next;
    
          // Constructor to create a new node
          // Next is by default initialized
          // as null
          Node(int d) { data = d; }
      }
    }

3. 노드 삽입, 삭제

  • 삽입, 삭제는 기본적으로 다음 노드를 가리키는 pointer의 값을 변경하면서 이뤄진다.

과제2-5에 공통적으로 사용된 ListNode 코드

2-2. 과제 2. LinkedList를 구현하세요.

  • 정수를 저장하는 ListNode 클래스를 구현하세요.
  • ListNode add(ListNode head, ListNode nodeToAdd, int position)를 구현하세요.
  • ListNode remove(ListNode head, int positionToRemove)를 구현하세요.
  • boolean contains(ListNode head, ListNode nodeTocheck)를 구현하세요.

3. 과제 3. Stack을 구현하세요.

  • int 배열을 사용해서 정수를 저장하는 Stack을 구현하세요.
  • void push(int data)를 구현하세요.
  • int pop()을 구현하세요.

4. 과제 4. 앞서 만든 ListNode를 사용해서 Stack을 구현하세요.

  • ListNode head를 가지고 있는 ListNodeStack 클래스를 구현하세요.
  • void push(int data)를 구현하세요.
  • int pop()을 구현하세요.

5. 과제 5. Queue를 구현하세요.

  • 배열을 사용해서 한번
  • ListNode를 사용해서 한번.

출처

profile
spring, java학습

0개의 댓글