2024.11.28 - [Knowledge/자료구조] - [자료구조] 스택(stack)과 자바를 통한 구현(배열, ArrayList) [자료구조] 스택(stack)과 자바를 통한 구현(배열, ArrayList)스택 스택(stack)은 먼저 넣은 데이터가 나중에 나오는 자료구조이다. 데이터를 넣는 작업은 푸시(push) , 꺼내는 작업은 팝(pop) 이라고 한다. 스택에서 데이터를 관리할 때, 가장 최근에 추가된jh7722.tistory.com 스택의 대한 설명은 위 포스팅을 참고 바란다. 스택의 추상자료형푸시(push), 팝(pop), 가득 찼는지 확인(isFull), 비었는지 확인(isEmpty)과 같은 연산과 최근에 삽인한 데이터 위치를 확인할 톱(top)도 있다. 구분정의설명연산boolean isF..
Language
Math 클래스java.lang 패키지에 포함되어 있는 클래스이다. 수학연산에 관련된 다양한 기능을 제공한다. Math의 다양한 함수들abs() : 절대값 구하기int a = -10;int absValue = Math.abs(a);System.out.println("Absolute value: " + absValue); // Output: Absolute value: 10max() : 최대값 구하기int x = 5;int y = 10;int maxValue = Math.max(x, y);System.out.println("Max value: " + maxValue); // Output: Max value: 10min() : 최소값 구하기int minValue = Math.min(x, y);System...
Java의 startsWith와 endsWith 메서드는 문자열이 특정 문자열로 시작하거나 끝나는지 확인할 때 유용한 메서드이다. startsWithboolean startsWith(String prefix)문자열이 지정된 파라미터인 prefix로 시작하는지 여부를 확인한다.단 공백도 취급하기 때문에 공백이 있을 경우 적절한 처리 후 사용해야 한다. 예시String str = "Hello, World!";boolean result1 = str.startsWith("Hello"); // true 반환boolean result2 = str.startsWith("He"); // true 반환boolean result3 = str.startsWith("H"); // true 반환boolean result4 =..
코딩테스트를 풀다보면 배열을 리스트 형태로 변환할때가 많은데 아래와 같이 사용하였다.List aaList = Arrays.asList("a", "b", "c", "d", "e");aaList.remove(0);당연히 List를 반환하므로 remove(), add() 등 ArrayList의 메소드를 사용가능 할 줄 알았지만 단순 선언만으론 해당 기능들을 사용할 수 없다.해당 이미지는 asList()에 대한 설명이다. `Arrays.asList` 를 사용하여 생성된 리스트는 고정 크기이다. 즉 리스트의 크기를 변경(추가 또는 제거)할 수 없다. 리스트의 요소의 변경만 가능한 배열의 특성을 가지고 있다고 생각하면 된다. 그러기 때문에 다음과 같은 방법을 이용해야 한다. import java.util.Arra..
비트 연산자는 일반 코드를 작성할 때 사용한 적이 없지만 코딩테스트에서는 심심치 않게 출제되므로 정리할 필요를 느낀다. 비트 연산자는 정수타입의 데이터를 2진수로 계산하는 연산자이다. (피연산자로 실수는 허용하지 않는다.) 2진수는 말 그대로 1이나 0으로 표현되는 것을 의미하며, 여기서 bit는 1이나 0을 나타낸다. 2진법(2진수)컴퓨터에서 데이터를 표현하기 위해 사용된다. 2를 기반으로 1과 0으로 표현된다.10진수0123456789102진수011011100101110111100010011010 2의 보수2의 제곱수에서 빼서 얻은 이진수를 의미하며, 컴퓨터가 음수를 저장하기 위해 사용되는 방식 중 하나이다.기본적으로 비트는 2의 제곱수로 표현이 된다. 예를 들어 4비트의 2진수를 2^4(=16) ..
람다가 등장한 배경람다 표현식이 등장한 배경은 자바 8의 주요 개선 사항 중 하나이다. 이전 자바에서는 코드를 간결하게 표현하기 위해선 익명 클래스를 활용하였다. 익명클래스는 인터페이스나 추상 클래스의 구현을 정의하는 데에는 유용했지만, 코드가 복잡해지고 가독성이 떨어지는 문제가 발생되었다. 자바 8에서는 이러한 문제를 해결하기 위해 람다 표현식을 도입하였다. 람다 표현식은 익명 함수를 정의하는 간결한 방법으로, 함수형 프로그래밍 스타일을 지원하고 코드를 더 간결하게 만들어준다. 람다 표현식은 자바 컬렉션과 스트림 API와 밀접하게 관련되어 있으며, 컬렉션을 데이터를 저장하고 조작하는 데 사용되는 자바의 핵심 요소 중 하나이다. 자바 8에서는 이 컬렉션을 효과적으로 다루기 위해 스트림 API 도입하였고,..
어노테이션의 역할스프링 같은 프레임워크를 사용하면 아무래도 어노테이션의 역할은 더 광범히 해진다. 그럼 일단 Java 코드로 돌아와 어노테이션의 역할을 먼저 확인해 보자.우선, 어노테이션은 기본적으로 아래 세 가지 기능을 제공한다.컴파일러에서 코드 작성 문법 에러를 체크빌드도구에서의 사용 (코드 생성)실행 시(런타임 시) 특정 기능을 실행이것에 대한 예시로 @Override 어노테이션을 확인해 보자. @Override 어노테이션은 직관적으로 자바의 오버라이딩을 표현해 주는 것을 알 수가 있다. 자바에 대한 오버라이딩을 배우면 알 수 있듯이 저 어노테이션이 없다고 하더라도 해당 기능을 쓰는 데는 문제가 발생하지 않는다. class Parent { public void hello(String name..
클린코드 책과 제로베이스 [개발자와 함께 읽는 클린코드] 강좌를 기반으로 작성하였습니다. 주석 이번 챕터에서는 4가지 주제로 설명을 해보려고 한다. 주석을 최대한 쓰지 말자 좋은 주석 주석보다 어노테이션 JavaDoc 01. 주석을 최대한 쓰지 말자 책에서는 일단 주석을 사용하는 것을 지양하도록 설명하고 있다. 지양하는 이유는 올바른 주석을 활용하기가 생각보다 어렵기 때문이다. 올바른 주석은 그 어떤 정보보다 유용하지만 대부분의 주석은 그러하지 못하다. 주석은 나쁜 코드를 보안하지 못한다. 코드에 주석을 추가하는 이유는 일반적으로 코드품질이 나쁘기 때문이다. 코드품질이 나쁘다는 것은 코드만으로 본인이 작성한 로직을 설명하지 못한다는 의미이다. 이렇다 보니 주석으로 코드의 의도를 표현하는 경우가 발생한다...
클린코드 책과 제로베이스 [개발자와 함께 읽는 클린코드] 강좌를 기반으로 작성하였습니다. 이미지 출처 - https://medium.com/backticks-tildes/the-s-o-l-i-d-principles-in-pictures-b34ce2f1e898 Chapter3. 함수 어떤 프로그램이든 가장 기본적인 단위는 함수이다. 이 장은 함수를 잘 만드는 법에 대해 알려주고 있다. 01. SOLID 법칙 우선 책에 내용을 정리하기 전 SOLID 법칙에 대해 간단히 정리하고자 한다. SOLID 원칙은 객체지향 설계의 5가지 원칙이라고 하며, 책에서도 해당 방식을 언급하면서 설명하므로 알아줄 필요가 있다. SRP 단일 책임 원칙 OCP 개방-폐쇄 원칙 LSP 리스코프 치환 원칙 ISP 인터페이스 분리 원칙..
클린코드 책과 제로베이스 [개발자와 함께 읽는 클린코드] 강좌를 기반으로 작성하였습니다. Chapter 1. 깨끗한 코드 클린코드 1장에서는 어떤 코드가 깨끗한 코드이며 왜 깨끗한 코드를 사용해야 하는지 설명하고 있다. 나쁜 코드 코드를 읽게 되었을 때 '뭔가 이상하다. 변수의 의미도 모르겠고 중복코드가 많네. 포맷팅도 이상하고, 함수가 너무 뚱뚱한데?'라고 느낀 다면 나쁜 코드라고 볼 수 있다. 성능이 나쁜 코드 불필요한 연산이 들어가서 개선의 여지가 있는 코드 의미가 모호한 코드 이해하기 어려운 코드, 네이밍과 그 내용이 다른 코드 중복된 코드 비슷한 내용인데 중복되는 코드들은 버그를 낳는다. (재활용이 아닌 코드를 복붙 해서 여러 군데 사용하는 경우) 나쁜 코드가 나쁜 이유 나쁜 코드는 깨진 유리창..