java 98

[Java] - 컬렉션 프레임워크 (Collection Framework)

컬렉션 프레임워크 (Collection Framework)자료 구조(Data Structure)는 데이터를 효율적으로 저장하고 관리하기 위한 방식이며, 컬렉션 프레임워크는 자바에서 이러한 자료 구조들을 표준화하여 미리 만들어 놓은 클래스와 인터페이스의 모음입니다.이 프레임워크 덕분에 개발자는 데이터의 크기가 동적으로 변하는 상황을 쉽게 처리할 수 있으며, 삽입, 삭제, 검색, 정렬과 같은 복잡한 작업을 편리하게 수행할 수 있습니다.https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Collection.html Collection (Java SE 17 & JDK 17)Type Parameters: E - the type of ele..

Programming/Java 2025.10.08

[Java] - 인터페이스와 제네릭

인터페이스 (Interface) - 클래스를 위한 명세서인터페이스(Interface)는 두 대상 간의 상호작용 규칙을 정의한 '약속' 또는 '규격'입니다. 프로그래밍에서는 클래스가 어떤 메서드를 반드시 가지고 있어야 하는지에 대한 명세(Specification)를 정의하는 역할을 합니다.추상 클래스가 미완성된 설계도였다면, 인터페이스는 구현부는 전혀 없이 밑그림만 있는 '완전한 추상 설계도'라고 할 수 있습니다.💡 쉬운 비유USB 포트를 생각해 보세요. 어떤 회사(삼성, LG, Apple)의 어떤 장치(키보드, 마우스, 외장하드)를 만들든, USB 인터페이스 규격에 맞게 만들면 어떤 컴퓨터에든 꽂아서 사용할 수 있습니다. 인터페이스는 이 USB 포트 규격처럼, "이렇게 만들어야 서로 통신할 수 있어!"..

Programming/Java 2025.10.08

[Java] - 다형성과 추상 클래스

다형성 (Polymorphism) - 하나의 이름, 여러 가지 모습다형성은 말 그대로 "여러 가지 형태를 가질 수 있는 능력"을 의미합니다. 프로그래밍에서는 하나의 객체 인스턴스가 여러 가지 타입의 참조 변수로 다뤄질 수 있는 성질을 말합니다.특히 상속 관계에 있을 때, 부모 클래스 타입의 참조 변수로 자식 클래스의 인스턴스를 참조할 수 있습니다.// 부모 타입으로 자식 객체를 참조Person p = new Student();Object obj = new Student();이렇게 참조 변수의 타입이 달라지더라도, 힙(Heap) 메모리에 생성된 실제 객체 자체가 변하는 것은 아닙니다. 단지 그 객체를 바라보는 "관점" 또는 "리모컨"이 달라지는 것뿐입니다.다형성의 장점 유연성: 코드가 특정 클래스에 묶이지..

Programming/Java 2025.10.08

[Java] - 자바 상속의 원리 및 활용

상속 (Inheritance)상속(Inheritance)은 객체지향 프로그래밍의 핵심 개념 중 하나로, 기존에 있던 부모 클래스(상위 클래스)의 속성(필드)과 기능(메서드)을 새로운 자식 클래스(하위 클래스)가 그대로 물려받아 사용하고, 자신만의 기능을 추가하여 확장하는 것을 말합니다.`extends` 키워드를 사용하여 상속 관계를 명시하며, 이를 통해 코드의 재사용성을 높이고 중복을 줄여 유지보수가 쉬운 프로그램을 만들 수 있습니다.💡 쉬운 비유'사람(Person)' 클래스를 부모로 하여 '학생(Student)' 클래스를 만든다고 상상해 보세요. 모든 학생은 사람이므로 '이름', '나이'와 같은 속성과 '먹는다'는 행동을 물려받습니다. 그리고 '전공'이라는 자신만의 속성과 '공부한다'는 새로운 행동을..

Programming/Java 2025.10.08

[Java] - JVM구조와 접근제어자 그리고 캡슐화

JVM 메모리 구조자바 프로그램은 운영체제에 직접 실행되는 것이 아니라, JVM(Java Virtual Machine)이라는 가상 머신 위에서 동작합니다. JVM은 자바 코드가 어떤 운영체제에서든 동일하게 실행될 수 있도록 해주는 환경을 제공하며, 프로그램을 실행하기 위해 메모리를 여러 영역으로 나누어 체계적으로 관리합니다.JVM의 메모리 구조는 크게 5가지 영역으로 나눌 수 있습니다. 이 중 메서드 영역과 힙 영역은 모든 스레드가 공유하며, 나머지는 각 스레드마다 개별적으로 생성됩니다.💡 JVM 버전에 따라 달라질수 있습니다.모든 스레드가 공유하는 영역메서드 영역 (Method Area)메서드 영역은 클래스에 대한 정보가 저장되는 공간입니다. 프로그램이 실행될 때 사용될 클래스의 구조, 메서드, `s..

Programming/Java 2025.10.07

[Java] - 배열

배열배열(Array)이란?: 동일한 데이터 타입의 값들을 하나로 묶어 저장하는 자료구조입니다. 여러 개의 변수를 선언하는 대신, 하나의 배열 변수로 여러 데이터를 관리할 수 있어 코드가 훨씬 간결해집니다. 특징동일한 데이터 타입: 하나의 배열에는 정수(int), 문자열(String) 등 같은 종류의 데이터만 저장할 수 있습니다.고정된 크기: 배열은 한 번 생성되면 크기를 변경할 수 없습니다.인덱스(Index): 각 데이터는 0부터 시작하는 고유한 번호(인덱스)를 가지며, 이 인덱스를 통해 특정 위치의 데이터에 직접 접근할 수 있습니다.연속된 메모리 공간: 배열의 요소들은 메모리상에 연속적으로 저장됩니다.💡 배열은 참조 자료형! Java에서 배열은 기본 자료형(int, char 등)이 아닌 참조 자료형입..

Programming/Java 2025.10.05

[Java] - 기본문법 & 제어문

미리 알아두면 좋은 개념JVM (Java Virtaul Machine)자바 프로그램이 실행되는 환경JRE (Java Runtime Environment)자바 프로그램을 실행하기 위한 환경 제공JDK (Java Development Kit)자바 애플리케이션을 개발하고 실행하기 위한 모든 도구를 제공Hello Java프로그램(Program)컴퓨터의 명령어들의 집합프로그래밍(Programming) → 컴퓨터에게 명령을 내리는 과정저급언어(기계어, 어셈블리어) / 고급언어(Java, Python)운영체제(Operating System, OS) 역시 프로그램컴퓨터의 자료표현비트 : 0 또는 1의 값만 가질 수 있음 → 2진수 사용바이트 : 8개의 비트로 구성된 정보단위, 컴퓨터 메모리의 기본 단위10진수 기반 단..

Programming/Java 2025.09.22

[JAVA] SWEA 7793. 오! 나의 여신님

문제 유형구현BFS시뮬레이션큐풀이 방법 도출처음 이 문제를 그저 "그래프탐색이니까 DFS로 풀어봐야지!" 라는 생각으로 했다가 이미 많은 코드를 짜고나서야 알았다. BFS탐색을 통해 찾아야 하는구나... 심지어 Queue를 두개를 써서! 이 문제에서 움직이고 변화하는 것이 두가지 있는데 '수연' 과 '악마의 손아귀'이다. 이 둘을 관리하기 위해서 Queue 두개를 사용해서 관리해야 했고, 악마의 손아귀 와 수연이 움직이는 '시간'도 중요한 포인트로 생각했다.map의 정보를 입력받을 때 수연('S')의 값과 악마의 손아귀('*')의 위치 값을 각각의 관리 Queue에 넣었다.Point class를 만들어서 좌표값 r, c 와 시간의 흐름을 파악하기 위한 time을 받아 넣었다.이후에는 따로 메서드를 분리해..

[JAVA] SWEA 4013. [모의 SW 역량테스트] 특이한 자석

문제 유형구현시뮬레이션배열리스트풀이 방법 도출우선적으로 고려해야할 점은 자석들 간의 접점이 같은 극이냐 아니냐에 대한 비교라고 생각했다.어떤 자석은 언제 어떻게 돌릴지는 결국 돌리는 자석에 대한 주변 자석의 접점이 중요하기 때문 가장 위 화살표 표시부터 시계방향으로 인덱스를 돌려보면, 왼쪽 자석과 오른쪽 자석의 접점은 각각 2번 6번 톱니이다.문제에 주어진 대로 4개의 자석이 있으니 3개의 접점에 대해서 회전을 할 때마다 비교하면 된다고 생각했다. 3개의 접점을 구한다음에는 회전에 따른 자석의 인덱스 연산을 메서드로 구현했다.시계(1): remove(7) → add(0, 값)반시계(-1): remove(0) → add(값)즉, 머리/꼬리를 직접 다루지 않고, 리스트를 회전시키는 방식으로 구현했다. 이제 ..

[JAVA] 백준 3190번 : 뱀

문제 유형구현자료 구조시뮬레이션덱큐풀이 방법 도출뱀이 움직이는 로직과 종료 조건을 염두한 while 무한루프 문까지는 머리속에서 손쉽게 그려졌다.문제는 머리의 이동과 꼬리의 존재... 뱀을 어떻게 관리할 것인지가 가장 큰 문제였다. 처음 생각해낸 방법은 머리와 꼬리의 좌표를 따로 저장해두는 변수를 만들어 관리하면 어떨까? 했는데,뱀의 머리가 방향을 전환하게 되면 꼬리는 그 방향을 전환하는 곳에가서 전환해야 하는데 언제 전환하고 다음 꼬리의 좌표는 어떻게 초기화 해줄지 고려해야할 요소들이 너무 많고 복잡해졌다. 그러다가 문제에서 힌트를 얻게 됐는데, 사과를 얻지 못했을 때 자리를 '비워준다'라는 말에서 큐와 덱이 생각났다. 큐보다는 덱이 훨씬 생각하기 편한 것이 덱의 경우 앞과 뒤 모두 넣었다가 뺄 수 있..