전체 글
-
Stack (스택)알고리즘/자료구조 2020. 12. 29. 23:32
Stack LIFO(Last In First Out) 구조를 가진 자료구조다. 말그대로 나중에 들어온 데이터가 먼저 나간다. 먼저 들어온 데이터가 가장 아래에 위치한다. 아래있는 데이터를 꺼내려면 그 위에 있는 데이터를 모두 꺼내야 한다. 스택에 데이터를 넣는 행위를 push 이라고 한다. 스택에서 데이터를 꺼내는 행위를 pop 이라고 한다. 두가지 자료구조를 활용해서 스택을 구현했다. 하나는 배열, 하나는 ListNode(LinkedList를 실습하기 위해 만든 클래스)이다. 배열로 구현했을 땐, 크기를 미리 정해야하기 때문에 가변적이지 못하다. ListNode로 구현했을 땐 스택 크기 제한이 없다. 구현1 (int 배열 사용) 테스트코드 포함 전체 코드 링크 package com.example.wee..
-
Linked List (연결 리스트)알고리즘/자료구조 2020. 12. 29. 21:26
Linked List 리스트 자료구조는 중복 저장을 허용하며 데이터를 나란히 저장한다. 자바에는 리스트 자료구조를 정의해놓은 List컬렉션이 있다. (인터페이스) 객체를 인덱스로 관리하여 객체를 삽입하면 인덱스가 자동으로 부여된다. 그래서 인덱스로 객체에 검색, 삭제가 가능하다. 객체를 직접 저장하고 있지 않고 객체의 주소를 가지고 있다. null도 저장이 가능하다. (아무것도 참조하지 않는 상태) 구현체로 ArrayList, LinkedList, Vector 등이 있다. LinkedList(연결 리스트)는 List 인터페이스의 구현체로 메모리의 동적할당을 기반으로 구현된 리스트다. LinkedList의 모든 노드는 인접 노드를 참조해서 체인처럼 관리한다. 노드를 리스트의 중간에 삽입하여도 인접한 노드들..
-
[애플리케이션을 테스트하는 다양한 방법] JUnit5 Assertion개발/Test 2020. 12. 28. 14:12
Assertion 실제테스트에서 검증하고자 하는 내용을 확인하는 기능이다. assert를 다 다루기엔 너무 많고 몇가지만 간추려서 학습한다. 연습 코드 실제 로직 작성전에 테스트 먼저 작성하자. assertEquals(expected, actual) 인자로 (기대값, 실제값[, 실패시 메세지])로 주고 두 값이 같은지 확인한다. 실패시 메세지는 필수는 아니다. 다만 나중에 봤을 때 메세지를 적어놨면 디버깅이 더 쉬울것이다. 메세지는 스트링으로 줄수도 있고 supplier (or supplier를 람다식)으로 작성할 수도 있다. Supplier도 테스트가 실패했을때 출력해줄 메세지를 적어주면 된다. 스트링으로 작성핳는 것 보다 복잡하지만 사용하는 이유는 에러 메세지를 만들 때, (연산이 들어가는 등 복잡한..