2025/04 8

백준16401. 과자 나눠주기

✔️ 문제 분석https://www.acmicpc.net/problem/16401 매개변수탐색에서는 start, end, mid의 범위 설정이 중요하다. 평소 익숙한 매개변수탐색 로직을 작성해 제출했지만 계속 틀려 게시판의 예외 케이스를 보고 틀렸다는 것을 깨닫게 되었다. 💣 틀린 코드 평소 start long start = 1;long end = snacks[N-1];long max = 0;while (start input 케이스3 41 1 1 1output:0answer:1 1️⃣ while 조건문 수정start를 1, end를 1로 잡게되면 while(start그래서 while(start로 수정했다. 2️⃣start = mid 수정start = mid 를 하면 위의 input일 경우 sta..

Hash

#️⃣ 해시해시 함수 (Hash Function)데이터의 효율적 관리를 목적으로 임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 함수 해싱 (Hashing)key : 매핑 전 원래 데이터의 값value : 매핑 후 데이터의 값매핑하는 과정 전체를 '해싱'이라고 한다. 해시 충돌 (Collision)해시 함수는 해시값의 개수보다 대개 많은 키 값을 해시값으로 변환(many to one 대응)하기 때문에 해시함수가 서로 다른 두 개의 키에 동일한 해시값을 내는 해시충돌이 발생하게 된다. 그래서 충돌을 최소화할 수 있는 해시함수를 사용해야 한다. Hash가 쓰이는 곳hashMap 형태로 많은 언어들에서 사용된다. 주로 특정 데이터를 임시 공간에 저장하고 나중에 데이터의 키로 해당 데이터를 빠르게 찾..

CS/Java 2025.04.28

Collection Framework

📁 Java Collection Framework쉽게 말해서 자료 구조 종류의 형태들을 자바 클래스로 구현한 모음집이라고 보면 된다. 데이터를 저장하는 자료 구조와 데이터를 처리하는 알고리즘을 구조화하여 클래스로 구현해 놓았기 때문에 자바 개발자는 그냥 인스턴스화만 하면 사용 가능하다. 👍🏻 장점인터페이스와 다형성을 이용한 객체지향적 설계를 통해 표준화되어 있기 때문에 편리하고 재사용성이 높다.🗃️ 종류 크게 Collection 인터페이스와 Map 인터페이스로 나뉜다. Collection 인터페이스 List, Queue, Set에 상속을 하는 최상위 컬렉션 타입업캐스팅으로 다양한 종류의 컬렉션 자료형을 받아 자료를 삽입, 삭제, 탐색 기능을 할 수 있다. (다형성) List 인터페이스순서를 가..

CS/Java 2025.04.28

Reflection

🪞Reflection(반사)이란?객체를 통해 클래스의 정보를 분석하여 런타임에 클래스의 동작을 검사하거나 조작하는 프로그램 기법이다. 클래스 파일의 위치나 이름만 있다면 해당 클래스의 정보를 얻어내고, 객체를 생성하는 것 또한 가능하게 해주어 유연한 프로그래밍을 가능케 해준다. reflection은 프레임워크, 라이브러리에서 많이 사용된다. (ex. JPA, Jackson, Mockito, IntelliJ 자동완성 기능)왜냐하면 프레임워크, 라이브러리는 사용하는 사람이 어떤 클래스명과 멤버들을 구성할지 모르는데, 이러한 사용자 클래스들을 기존의 기능과 동적으로 연결시키기 위해 reflection을 사용한다고 보면 된다. 대표적인 예로는 스프링의 DI(Dependencty Injection), Pro..

CS/Java 2025.04.24

Generic

❔ Generic (제네릭) 이란? 자바에서 제네릭이란 클래스 내부에서 사용할 데이터 타입을 외부에서 지정하는 기법을 말한다. 우리가 변수를 선언할 때 변수의 타입을 지정해주듯이, 제네릭은 객체에 타입을 지정해주는 것이라고 보면 된다. 예를 들어 리스트 자료형 같은 컬렉션 클래스나 메소드에서 사용할 내부 데이터 타입을 파라미터 주듯이 외부에서 지정하는 이른바 타입을 변수화 한 기능이라고 이해하면 된다. Generic 타입 기호 네이밍타입설명타입 (Type)요소 (Element), 예를 들어 List키 (Key), 예를 들어 Map리턴 값 또는 매핑된 값 (Variable)숫자 (Number)2번째, 3번째, 4번째에 선언된 타입제네릭 선언1. 클래스 및 인터페이스 선언public class ClassN..

CS/Java 2025.04.23

Java 8 특징

Java 8 Java 8에 추가된 내용lambdaoptional Lambda함수를 하나의 표현식으로 나타낸 것함수형 프로그래밍 언어에서 사용되는 개념으로 메서드에 이름이 없어 익명 함수라고도 불린다.괄호()와 화살표→를 이용해 함수를 선언한다. 람다식으로 선언된 변수명은 다른 변수명과 중복될 수 없다. 장점코드를 간결하게 만들 수 있다. 단점재사용이 불가능하다.디버깅이 어렵다. 재귀로 만들경우 부적합하다. 예시List list = Arrays.asList("banana", "apple", "cherry");// 기존Collections.sort(list, new Comparator() { @Override public int compare(String o1, String o2) { ..

CS/Java 2025.04.07

자바의 비동기 처리

동기 A라는 작업이 끝나는 동시에 B라는 작업을 시작한다.  비동기A가 작업을 끝내든 말든 상관없이 B가 자신의 작업을 시작한다. 작업들이 서로의 작업 시작 및 종료 시간에 영향을 받지 않고 별도의 작업 시작/종료 시간을 가진다. 모든 비동기 방식은 멀티 스레드에서 작동한다.  Thread를 사용하지 않은 코드멀티스레딩을 사용하지 않은 코드이다.  public class AsyncExample { public static void main(String[] args) { // 작업 1 - 1.5초 소요 System.out.println("작업1 시작"); try{ Thread.sleep(1500); } catch (Interrupt..

CS/Java 2025.04.07

Error & Exception

Throwable class예외와 관련된 최상위 클래스이다. 대부분 이 클래스를 직접 사용하기보다 이를 상속받은 Error나 Exception이 주로 사용된다. Throwable 클래스는 객체에 대한 오류나 예외에 대한 메시지를 담거나 예외 정보들을 기록한다. getMessage() : 발생한 예외에 대한 구체적인 메시지를 반환printStackTrace() : 예외에 대한 자세한 디버깅을 위해 주로 사용되는 메서드 오류(error)와 예외(exception)error : 프로그램 코드에 의해서 수습될 수 없는 심각한 오류exception : 프로그램 코드에 의해서 수습될 수 있는 다소 미약한 오류 Error는 메모리 부족(Out of Memory Error)이나 스택오버플로우(StackOverflowE..

CS/Java 2025.04.04