본문 바로가기

JAVA공부

(77)
재귀함수 class Solution { // 주어진 구슬 개수 balls에서 share 개의 구슬을 선택하는 경우의 수를 구하는 함수 public int solution(int balls, int share) { // combination 메서드 호출하여 조합의 수를 반환 return combination(balls, share); } // 조합(combination)의 수를 계산하는 메서드 public static int combination(int balls, int share) { // base case: share가 0이거나 balls와 share가 같으면 경우의 수는 1 if (balls == share || share == 0) return 1; // 재귀적으로 combination 메서드를 호출하여 ..
HashMap, String.split() HashMap은 Java에서 많이 사용되는 데이터 구조 중 하나로, 키-값(key-value) 쌍을 저장하는데 사용됩니다. 여기서 각 키는 고유(unique)해야 하며, 하나의 키는 하나의 값과 연관되어 있습니다. Map 인터페이스를 구현한 HashMap 클래스는 해시 테이블(hash table)을 기반으로 합니다. 해시 테이블은 배열과 같은 구조를 가지고 있으며, 각 키-값 쌍은 해시 함수를 사용하여 배열의 인덱스로 변환되어 저장됩니다. 이렇게 HashMap은 다음과 같은 특징을 갖습니다: 고속 검색: HashMap은 해시 함수를 사용하여 키를 해시 코드로 변환하고, 이를 기반으로 키와 관련된 값에 접근합니다. 이는 매우 빠른 검색 속도를 제공합니다. 고유한 키: HashMap은 중복된 키를 허용하지 ..
StringBuilder StringBuilder sb = new StringBuilder(); // 문자열 추가 sb.append("Hello"); // 문자열 연결 sb.append(" World"); // 문자열 삽입 sb.insert(5, ","); // "Hello, World" // 문자열 삭제 sb.deleteCharAt(5); // "Hello World" // 문자열 수정 sb.setCharAt(6, 'w'); // "Hello world" // 문자열 역순으로 변환 sb.reverse(); // "dlrow olleH" // 문자열 출력 System.out.println(sb.toString()); // "dlrow olleH" StringBuilder sb = new StringBuilder(); // 문자열..
(int) Arrays.stream(array).average().orElse(0); (int) Arrays.stream(array).average().orElse(0); Arrays.stream(array): 이 부분은 'array'를 IntStream으로 변환합니다. .average(): 이 부분은 IntStream의 요소들의 평균을 계산합니다. .orElse(0): 이 부분은 스트림이 비어있을 경우에 기본값으로 0을 제공합니다 (예: 배열이 비어있는 경우). (int): 이 부분은 결과를 정수로 캐스팅합니다.
stream이란. 자바 스트림은 자바 프로그래밍 언어에서 데이터를 다루는 유연하고 강력한 방법 중 하나입니다. 스트림은 컬렉션 요소, 배열 또는 I/O 자원과 같은 데이터 소스로부터 연속된 요소 시퀀스를 나타냅니다. 스트림은 한 번에 하나의 항목만 처리하며, 요소를 중간 단계에서 변환하고 최종 결과를 생성하는 파이프라인으로 구성됩니다. 스트림의 주요 특징은 다음과 같습니다: 컨슈머 기반 처리 (Consumer-Based Processing): 스트림은 요소를 처리하기 위해 함수형 인터페이스를 사용합니다. 이를 통해 간단하고 유연한 데이터 처리를 제공합니다. 지연 평가 (Lazy Evaluation): 스트림은 필요할 때까지 요소를 계산하지 않습니다. 이는 효율적인 리소스 사용을 가능하게 합니다. 병렬 처리 지원 (Para..
상속 클래스간의 상속은 extends 키워드를 사용하여 정의할 수 있습니다. public class 자식클래스 extends 부모클래스 { } 부모 클래스에 새로운 필드와 메서드가 추가되면 자식 클래스는 이를 상속받아 사용할 수 있다. 자식 클래스에 새로운 필드와 메서드가 추가되어도 부모 클래스는 어떠한 영향도 받지 않는다. 따라서 자식 클래스의 멤버 개수는 부모 클래스보다 항상 같거나 많다. 클래스간의 관계 클래스간의 관계를 분석하여 관계설정을 해줄 수 있습니다. 상속관계 : is - a (”~은 ~(이)다”) 포함관계 : has - a (”~은 ~을(를) 가지고 있다”) 포함관계는 자동차와 타이어, 차문, 핸들 과의 관계라고 볼 수 있습니다. 한번 위 공식에 대입해 보겠습니다. 자동차는 타이어를 가지고 있..
package와 import 패키지란? 패키지란 클래스의 일부분이면서 클래스를 식별해 주는 용도입니다. 패키지는 상위 패키지와 하위 패키지를 도트(.)로 구분합니다. package 상위패키지.하위패키지; 이렇게 선언할 수 있습니다. 예를 들어 oop.pk1 이라는 패키지와 oop.pk2 라는 패키지가 있다고 가정해보겠습니다. 두 패키지에 모두 Car 클래스가 존재한다면? 그리고 이를 사용하려고 한다면? Java 는 패키지의 경로를 통해 이를 구분합니다. import란? import는 다른 패키지에 있는 클래스를 사용하기 위해 명시하는 키워드 입니다. 위에서 살펴본 oop.pk1 이라는 패키지와 oop.pk2 라는 패키지를 import로 명시해 보겠습니다. import oop.pk1.Car;, import oop.pk2.Car; 클래..
접근 제어자 제어자는 클래스, 변수, 메서드의 선언부에 사용되어 부가적인 의미를 부여해 줍니다. 접근 제어자 : public, protected, default, private 그 외 제어자 : static, final, abstract 하나의 대상에 여러 개의 제어자를 조합해서 사용할 수 있으나, 접근 제어자는 단 하나만 사용할 수 있습니다. 접근 제어자 멤버 또는 클래스에 사용, 외부에서 접근하지 못하도록 제한합니다. 클래스, 멤버변수, 메서드, 생성자에 사용되고, 지정되어 있지 않다면 default 입니다. public : 접근 제한이 전혀 없습니다. protected : 같은 패키지 내에서, 다른 패키지의 자손클래스에서 접근이 가능합니다 default : 같은 패키지 내에서만 접근이 가능합니다. private..