분류 전체보기
![](http://i1.daumcdn.net/thumb/C400x400/?fname=https://blog.kakaocdn.net/dn/c2SoIu/btsHUS0h9Ns/pJGOBwukKYytwyoi5cKGkK/img.png)
![](https://tistory1.daumcdn.net/tistory/5364105/skin/images/no-image.jpg)
스택(Stack) 한 쪽 끝에서만 Item을 삭제하거나 새로운 Item을 저장하는 자료구조이다.후입선출(Last In First Out, LIFO)의 원리를 따른다. 즉, 가장 최근에 추가된 요소가 가장 먼저 제거되는 구조이다. 스택은 이름에서 알 수 있듯 데이터를 쌓아 올리는 형태로 관리되며, 새로운 요소가 추가되거나 제거될 때는 맨 위에 위치한 요소에 대해서 이루어진다.함수 호출의 실행 컨텍스트를 관리하거나 DFS를 비롯한 되추적(Traceback) 알고리즘 혹은, 재귀적인 알고리즘 등에서 호출을 추적할 때 사용할 수 있다. 스택 구현 : 동적 배열 class MyStack{ private T elements[]; private int top; public MyStack(){ ..
![](http://i1.daumcdn.net/thumb/C400x400/?fname=https://blog.kakaocdn.net/dn/b6vYMC/btsFFZtF1uM/AzQNlfSlIwHGqQ2GUSRiyk/img.png)
![](https://tistory1.daumcdn.net/tistory/5364105/skin/images/no-image.jpg)
재귀와 반복(Recursion, Iteration) 재귀 자신을 호출함으로써 문제를 해결하는 방식.문제를 부분 문제로 나누고.,부분 문제에 대해 동일한 알고리즘을 사용하여 해결하는 분할 정복법의 일종종료 조건을 만족할 때까지 자신을 호출한다.함수 호출 스택에 추가 비용이 들어가기 때문에 과도한 재귀 호출은 스택 오버플로우를 유발할 수 있다.Top-down 방식은 주로 재귀적인 접근 방식을 사용하며, 문제를 작은 문제로 쪼개고 결합하여 전체 문제의 해를 구한다. 반복 반복문을 사용하여 문제를 해결하는 방법코드가 좀 더 복잡할 수 있으나, 스택 오버플로우 문제에 상대적으로 자유롭다.Bottom-up 방식은 주로 반복적인 방식을 사용하고, 먼저 작은 문제를 해결하고 이를 이용해서 더 큰 부분 문제들을 점진적으..
![](http://i1.daumcdn.net/thumb/C400x400/?fname=https://blog.kakaocdn.net/dn/IgA1h/btsFA6lRVkr/IdbLmVtbgtX5ImRWJqRHaK/img.png)
![](https://tistory1.daumcdn.net/tistory/5364105/skin/images/no-image.jpg)
정렬 Java에서 배열과 컬렉션과 같은 데이터의 집합을 정렬하는 방법들에 대해서 살펴보겠다. 기본적인 정렬 방법부터, Comparator과 Comparable의 개념과, 둘의 사용 목적에 대해서 살펴보려고 한다. 추가적으로 Java에서 사용되는 정렬 알고리즘에 대해서 알아보자. 배열 : 기본 정렬 방법 int[] array = {5, 2, 8, 1, 9}; // 배열 오름차순 정렬 Arrays.sort(array); System.out.println(Arrays.toString(array)); // [1, 2, 5, 8, 9] 기본적으로 정렬 시, Arrays.sort(data) 메서드를 이용한다. 이는 따로 리턴 타입이 있지 않고, 메서드 내부에서 집합을 정렬하여 재배치하게 되기 때문에 array 변수..
![](http://i1.daumcdn.net/thumb/C400x400/?fname=https://blog.kakaocdn.net/dn/evC4ke/btsFxXRf2NU/cvMNmxL94kBem7Ic5S2iq0/img.png)
![](https://tistory1.daumcdn.net/tistory/5364105/skin/images/no-image.jpg)
Collection Framework(컬렉션 프레임워크) 자바에서는 데이터를 저장하고 관리할 수 있는 다양한 방법을 제공한다. 컬렉션 프레임워크는 자료를 구조화하여 데이터를 쉽게 사용할 수 있도록 도와준다. 계층 구조로 살펴보는 Collection의 종류 Collection : 대부분의 컬렉션 클래스의 상위 인터페이스. 컬렉션의 기본 동작을 정의한다. Set : 중복된 요소를 허용하지 않는 컬렉션 인터페이스. 구현체로는 HashSet,, TreeSet 등 List : 순서가 있는 요소들의 컬렉션 인터페이스. 인덱스에 의해 접근이 가능하다. 구현체로는 ArrayList, LinkedList, Vector(Extend -> Stack) 등 Queue : FIFO를 따르는 컬렉션 인터페이스. 구현체로는 Lin..
![](http://i1.daumcdn.net/thumb/C400x400/?fname=https://blog.kakaocdn.net/dn/bkEnpc/btsFxYQaiWR/044N3FkyvoyhpFmp2DHvm0/img.png)
![](https://tistory1.daumcdn.net/tistory/5364105/skin/images/no-image.jpg)
Java에서는 문자열을 다룰 수 있는 다양한 메서드 및 기능들을 제공한다. 해당 기능들은 프로그래밍에서도 유용하게 사용할 수 있으며, 문자열을 다루는 것은 코딩 테스트를 비롯한 PS에서 빈출 문제이다. 문자열의 다양한 메서드들 1. 문자열 탐색 및 추출 String str = "Hello, world!"; char ch = str.charAt(1); // 'e' int length = str.length(); // 13 String substr1 = str.substring(7); // "world!" String substr2 = str.substring(7, 12); // "world" int index1 = str.indexOf(","); // 5 int index2 = str.lastIndexOf..
![](http://i1.daumcdn.net/thumb/C400x400/?fname=https://blog.kakaocdn.net/dn/b538HH/btsFqX4kAWW/byejJVh0Zrr6Mi6TUnDpBK/img.png)
![](https://tistory1.daumcdn.net/tistory/5364105/skin/images/no-image.jpg)
테스트 코드의 필요성 및 실천 방법론 테스트 코드의 필요성과 "좋은 테스트 코드"를 작성하기 위한 방법론에 대해서 작성한 내용이다. 테스트 코드를 "왜" 작성하고 "어떠한 마음가짐"으로 임할 지에 대해서 서술해두었으니 읽어보면 좋을 것 같다. https://sjh9708.tistory.com/238 [Spring Boot] 좋은 테스트 코드 : 필요성 및 실천 방법론 개요테스트 코드의 필요성 수동 테스트의 문제점 수동으로 테스트 한다는 것은 곧 사람이 직접 테스트를 수행한다는 것이다. 특정한 케이스를 직접 넣어보고, 출력이나 로그 따위를 살펴보거나 디sjh9708.tistory.com JUnit이란? 자바를 위한 단위 테스트 프레임워크이다. 메소드, 클래스 및 패키지에 대한 단위 테스트를 작성하..
![](http://i1.daumcdn.net/thumb/C400x400/?fname=https://blog.kakaocdn.net/dn/bdM8T4/btsFoFJYaZh/JOdqk3qicWqrET7oMn5920/img.png)
![](https://tistory1.daumcdn.net/tistory/5364105/skin/images/no-image.jpg)
TCP : Connection 및 Error Control TCP Flow Control과 Error Control에 대해 살펴보기 앞서, TCP의 기본 개념과, 패킷, Error Control에서의 Window Size에 대해서 잘 모른다면 해당 글을 먼저 참고하고 오면 좋을 것 같다. https://sjh9708.tistory.com/193 [Network] TCP (1) : Connection과 Handshake, 그리고 TCP Error Control 전송 계층 (Transport Layer) 프로토콜 : TCP (Transmission Control Protocol), UDP (User Datagram Protocol) 양 끝 노드의 프로세스-프로세스간의 논리적 통신 제공, 네트워크 계층에서 설..
![](http://i1.daumcdn.net/thumb/C400x400/?fname=https://blog.kakaocdn.net/dn/MOBfl/btsFuNzg05F/z5GDmuwUxVZY5l3qkeyfok/img.png)
![](https://tistory1.daumcdn.net/tistory/5364105/skin/images/no-image.jpg)
전송 계층 (Transport Layer) 프로토콜 : TCP (Transmission Control Protocol), UDP (User Datagram Protocol) 양 끝 노드의 프로세스-프로세스간의 논리적 통신 제공, 네트워크 계층에서 설정한 경로로 하나의 프로세스에서 다른 프로세스로 전송한다. 효율적 데이터 전송, 데이터의 신뢰성 검사 Network layer은 호스트 간의 통신 및 문제 해결, Transport layer은 프로세스 간의 통신 및 문제 해결 Segment Transport Layer에서의 데이터 단위, 메시지의 조각 왼쪽에서 TCP data가 가질 수 있는 최대 byte = 1460byte - 총 1500 byte 중, TCP header, IP Header가 20byte씩..
![](http://i1.daumcdn.net/thumb/C400x400/?fname=https://blog.kakaocdn.net/dn/WSNve/btsFoJLktR3/8WTB8f2H0UC0CyjYh9e3u0/img.png)
![](https://tistory1.daumcdn.net/tistory/5364105/skin/images/no-image.jpg)
전송 계층 (Transport Layer) 프로토콜 : TCP (Transmission Control Protocol), UDP (User Datagram Protocol) 양 끝 노드의 프로세스-프로세스간의 논리적 통신 제공, 네트워크 계층에서 설정한 경로로 하나의 프로세스에서 다른 프로세스로 전송한다. 효율적 데이터 전송, 데이터의 신뢰성 검사 Network layer은 호스트 간의 통신 및 문제 해결, Transport layer은 프로세스 간의 통신 및 문제 해결 Segment Transport Layer에서의 데이터 단위, 메시지의 조각 왼쪽에서 TCP data가 가질 수 있는 최대 byte = 1460byte - 총 1500 byte 중, TCP header, IP Header가 20byte씩..