자바에서 레코드(Record)란 무엇인가 자바 레코드의 개념자바에서 레코드(record)는 데이터를 담기 위한 불변(immutable) 클래스를 간결하게 만들 수 있는 문법입니다.즉, “값만 저장하고 로직이 거의 없는 단순한 클래스”를 짧게 작성하도록 돕는 기능입니다.기존에는 데이터를 저장하려면 다음처럼 필드, 생성자, getter, equals(), hashCode(), toString() 등을 일일이 만들어야 했습니다.class Person { private final String name; private final int age; public Person(String name, int age) { this.name = name; this.age = ag..
14426번 접두사 찾기 (Prefix Search) 문제 N개의 문자열로 이루어진 집합 S가 주어집니다. M개의 문자열이 주어질 때, 각 문자열이 집합 S의 어떤 문자열의 접두사인지 판단하여, 그러한 문자열의 개수를 출력해야 합니다. 예시 입력 5 10baekjoononlinejudgestartlinkcodeplussundaycodingcodingshbaekjoonstarstartcodesundaycodingcodonlinejudgeplus 출력 7 설명 아래는 M개의 문자열 중 접두사에 해당하는 것들입니다: 검사 문자열 접두사 대상 문자열 (S 내) 접두사 여부 ..
자바 익명 클래스(Anonymous Class) 완전 이해 📘 정의 익명 클래스(Anonymous Class)는 이름이 없는 클래스입니다. 즉, 클래스를 따로 선언하지 않고 객체를 생성하면서 동시에 구현 내용을 함께 작성하는 문법입니다. 자바는 모든 기능을 클래스 내부에 넣어야 하지만, 익명 클래스는 그 규칙을 유지하면서도 “즉석에서 클래스 생성 + 사용”을 동시에 수행하게 합니다. 즉, 익명 클래스는 ‘한 번만 쓸 클래스를 이름 없이 즉석에서 정의하고 사용하는 방법’입니다. 💡 익명 클래스가 아닌 일반 클래스 방식 자바에서는 보통 다음 순서로 기능을 구현합니다. 1. 인터페이스를 정의합니다. 2. 그 인터페이스를 구현하는 클래스를 만..
Java 람다식(Lambda Expression) 완벽 정리 📘 람다의 정의 람다식(Lambda Expression)은 이름이 없는 함수(익명 함수)를 간결하게 표현하는 문법입니다. 자바에서 메서드를 사용하려면 원래 클래스 안에 반드시 정의해야 했습니다. 그러나 람다식은 클래스를 정의하지 않고도 함수처럼 동작하는 코드 블록을 표현할 수 있는 방법입니다. 즉, “람다는 메서드를 값처럼 다룰 수 있게 해주는 문법입니다.” 람다는 함수형 인터페이스(Functional Interface) 기반으로 동작합니다. 함수형 인터페이스란 오직 하나의 추상 메서드만 가진 인터페이스입니다. 예를 들어, @FunctionalInterfaceinterface Calcula..
Java 내부 클래스(Inner Class)의 완전한 이해 내부 클래스란 무엇인가 Java에서 내부 클래스(Inner Class)란, “다른 클래스 내부에 선언된 클래스”를 의미합니다. 즉, 한 클래스가 다른 클래스 안에 포함되어 있는 구조입니다. 이 구조는 단순히 ‘클래스를 안에 넣는 문법’이 아니라, 외부 클래스와 내부 클래스 간의 강한 논리적 연결(결합)을 표현하는 설계 방식입니다. 이때 내부 클래스는 단순한 코드 장식이 아니라, 구조적으로 한 클래스가 다른 클래스의 일부일 때, 외부에서 노출할 필요가 없을 때, 상속으로 표현할 수 없는 포함 관계를 표현할 때 사용됩니다. 내부 클래스가 필요한..
Java 싱글톤 패턴(Singleton Pattern) 완전 이해 싱글톤 패턴의 개념 Java에서 싱글톤 패턴(Singleton Pattern)은 “프로그램 전체에서 단 하나의 객체만 존재하도록 보장하는 설계 방식”입니다. 즉, 객체를 여러 번 만들지 않고 한 번만 생성해서 공유하는 구조입니다. 이 개념을 이해하려면 반대로 “싱글톤이 아닌 일반적인 객체 생성 방식”을 먼저 비교해보는 것이 좋습니다. 일반적인 객체 생성 방식과의 비교 일반적인 클래스는 new 키워드를 이용해 객체를 만들 수 있습니다. 예를 들어, public class Counter { private int count = 0; public void increase() { ..
Java 추상 클래스(Abstract Class)와 추상 메서드(Abstract Method)의 구조적 이해 추상 클래스의 본질과 일반 클래스와의 비교 Java에서 추상 클래스(Abstract Class)는 “공통된 특징을 가진 여러 클래스의 기본 틀”입니다. 하지만 이 틀은 완성되지 않은 상태이기 때문에 객체를 직접 생성할 수 없습니다. 즉, 추상 클래스는 “공통점은 미리 정의하고, 세부 내용은 나중에 자식이 채우게 하는 클래스”입니다. 먼저 일반 클래스를 생각해보면 이해가 쉽습니다. 일반 클래스는 모든 기능이 완전히 구현되어 있으므로, 바로 객체를 생성할 수 있습니다. public class Dog { public void sound() { Sy..
Java Interface 완전 이해하기 Interface의 개념과 존재 이유 Interface는 Java에서 ‘약속’의 개념을 코드로 표현한 구조입니다. 즉, “이 기능을 반드시 만들어야 한다”는 규칙을 정의하는 설계도입니다. 예를 들어, 여러 기기를 하나의 리모컨으로 제어해야 한다고 가정해보겠습니다. 리모컨에는 turnOn()과 turnOff()라는 버튼이 있습니다. 하지만 TV, 라디오, 에어컨은 각각의 방식으로 켜지고 꺼집니다. Interface는 이런 상황에서 ‘모든 기기가 동일한 버튼을 가져야 한다’는 통일된 규칙을 제공합니다. 따라서 Interface는 “무엇을 할 수 있는지”만 정의하고, “어떻게 할지”는 구현 클래스가 스스로 결정하게 합니다..
백준 1283번 단축키 지정 Python문제문제한글 프로그램의 메뉴에는 여러 개의 옵션이 있으며, 각 옵션은 하나 혹은 여러 개의 단어로 구성되어 있습니다.우리는 각 옵션마다 대표 알파벳 하나를 단축키로 지정해야 합니다.이 단축키는 중복될 수 없으며, 대소문자를 구분하지 않습니다.테스트케이스예제 입력 15NewOpenSaveSave AsSave All예제 출력 1[N]ew[O]pen[S]aveSave [A]sSa[v]e All예제 입력 28New windowNew fileCopyUndoFormatFontCutPaste예제 출력 2[N]ew windowNew [f]ile[C]opy[U]ndoF[o]rmatFon[t]Cut[P]aste문제설명각 옵션마다 단축키를 정하는 규칙은 다음과 같습니다.각 옵션의 단어..
백준 1337번 올바른 배열 Python문제문제올바른 배열이란 배열 안의 원소 중 5개의 수가 연속적인 수를 의미합니다.“연속적인 수”란, 다섯 개의 수를 정렬했을 때 인접한 두 수의 차가 모두 1인 것을 뜻합니다.예를 들어 {6, 1, 9, 5, 7, 15, 8}이라는 배열을 보면,이 안에 5, 6, 7, 8, 9라는 다섯 개의 연속된 수가 존재합니다.따라서 이 배열은 올바른 배열입니다.문제의 목표는, 주어진 배열이 올바른 배열이 되기 위해 추가로 필요한 원소의 최소 개수를 구하는 것입니다.테스트케이스3567출력: 2657984928493192398출력: 241000200030004000출력: 4761957158출력: 0문제 설명이 문제는 단순히 “5개의 연속된 숫자가 있는가?”를 묻는 것이 아니라,“..
- Total
- Today
- Yesterday
- DP
- 프로그래머스
- dfs
- 그리디알고리즘
- 상속
- 파이썬코딩
- 문제풀이
- 코딩
- 객체지향
- 프로그래밍
- 알고리즘문제풀이
- 문제 풀이
- 알고리즘
- 코딩테스트
- python 알고리즘
- Python
- 동적 계획법
- 자바
- 백준
- 그리디
- 코딩 테스트
- 알고리즘 문제풀이
- 알고리즘기초
- 그래프 탐색
- C++
- 파이썬
- c언어
- 브루트포스
- 동적계획법
- 문자열처리
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 |