Java

· Java
Annotation Java에는 Annotation이라는 인터페이스 가 존재한다. '@'가 앞에 붙은 형태로 존재하며 메서드 혹은 클래스등의 위에 붙여 사용하는 어노테이션은 메타데이터를 코드에 추가하기 위해 사용되는 주석이라고 할 수 있다. 하지만 일반적인 주석과는 다르게 값을 가질 수 있고, 런타임에 실행 흐름에 영향을 줄 수 있다. 공식문서와 소스 코드를 통해 살펴보자.선언규칙어노테이션은 인터페이스의 일종이지만 일반적인 인터페이스의 와 구분하기 위해 키워드 앞에 @를 추가하며 인터페이스 선언의 모든 규칙을 똑같이 적용할 수 있지만 몇 가지 하위 내용에서 차이점이 존재한다.  1. 인터페이스에 사용하는 sealed 혹은 non-sealed를 사용할 수 없다. public sealed interface ..
· Java
Java의 Sort 함수정렬컴퓨터공학의 많은 과목들에서 빠지지 않는 주제가 있다.바로 정렬이다. '정렬'이란 데이터들이 있을 때 정해진 기준에 따라 순서대로 나열하는 것을 의미한다.  이러한 정렬이 왜 중요할까?그 이유는 탐색에 있다. 무작위로 섞여있는 데이터들과는 다르게 정렬된 데이터들을 탐색할 때에는 아주 강력한 도구를 사용할 수 있는데 바로 이분탐색이다. 모든 데이터들을 살펴봐야 하는 순차탐색과는 다르게 이분탐색은 탐색을 한 번 진행할 때마다 후보의 수를 절반으로 줄이는 방식으로 탐색 시간을 압도적으로 줄일 수 있다.  정렬에도 비용이 들어가기 때문에 탐색보다 삽입/삭제가 더 빈번하게 일어날 경우에는 정렬 없이 순차탐색으로만 데이터를 찾을 수도 있지만 대부분의 프로그램에서는 탐색(조회) 요청이 훨씬..
· Java
ArrayDeque VS LinkedList 백준에서 독특한 계산기 문제를 풀던 중 이상한 점을 발견했다. 제시된 조건을 만족하기 위해 선형 자료구조를 사용하여 맨 앞과 맨 뒤에서 자료를 넣고, 빼는 연산을 사용해야 했다. ArrayList는 데이터를 삭제한다면 모든 데이터들을 앞으로 당기는 작업이 필요하기 때문에 Deque을 사용하기로 했고 구현체 중 하나인 LinkedList를 사용하였다. 하지만 결과는 시간초과였다. 시간을 더 단축할 아이디어가 없어서 도움을 요청한 결과 코드에서 LinkedList를 ArrayDeque으로 바꿨더니 통과 된다는 이야기를 들었다. 내 생각으로는 ArrayDeque와 LinkedList 모두 제거 연산을 할 때 O(1)로 동작할 텐데라고 생각하며 구현체만 ArrayDe..
· Java
if-else VS switch Java의 switch 문은 변수의 값에 따라 여러 실행 경로 중 하나를 선택할 수 있는 제어문이다. if-else 문과 같은 동작을 하기 때문에 같은 시간 복잡도를 가지고 있다고 생각하기 쉽지만 실제로는 꽤 다르다. 먼저 if-else 문을 살펴보자. if (condition1) { // 코드 블록 A } else if (condition2) { // 코드 블록 B } else if (condition3) { // 코드 블록 C } else { // 코드 블록 D } if-else 문 자체는 단순히 한 번의 조건을 평가하는 것이기 때문에 상수 시간 복잡도를 가진다.(O(1)) 하지만 예시와 같이 if-else 체인이 있거나 내부에 중첩된 if-else 문을 가지고 있다면..
dino9881
'Java' 카테고리의 글 목록