Java 22

[Java] 우선순위 큐 (PriorityQueue) 기본 사용법부터 객체 다루는 방법까지

우선순위 큐 (PriorityQueue) 란? 우선순위 큐는 삽입 순서와 상관 없이, 우선순위가 높은 데이터가 먼저 빠져 나가는 자료구조이다. PriorityQueue 기본 사용법 선언하기 // 우선순위가 낮은 숫자(작은 숫자)가 먼저 추출됨 PriorityQueue pQ = new priorityQueue(); // 우선순위가 높은 숫자(큰 숫자)가 먼저 추출됨 PriorityQueue pQ = new priorityQueue(Collections.reverseOrder()); 메서드 삽입 - add(원소) : 원소를 추가한다. - offer(원소) : 원소를 추가한다. 삭제 - remove() : 우선순위의 첫번째 값을 제거하고, 해당 값을 반환한다. 비어있으면 에러가 반환한다. - poll() : ..

Java/문법 2024.04.22

[JAVA] 순열과 조합 구현하기

요즘 코테 공부하면서 순열, 조합을 구현할 일이 많은데 자꾸 까먹어서 정리한다. 특히 백트래킹 문제에서 거의 필수적으로 등장하는 것 같다. 구글링 하면서 제일 직관적이고 이해가 쉽다고 느꼈던 링크를 참고해서 작성한다! 순열 - nPr (서로 다른 n개 중 r개를 선택하는 경우의 수. 순서 상관 있음.) - (1,2) 와 (2,1) 을 서로 다른 것으로 취급한다. 조합 - nCr (서로 다른 n개 중 r개를 선택하는 경우의 수. 순서 상관 없음.) - (1,2) 와 (2,1) 을 서로 같은 것으로 취급한다. 순열, 조합 모두 재귀로 구현한다. n개 중 r개를 뽑아서 output 배열에 저장할 것이다. 이때, 순열은 순서가 상관 있으므로 방문 배열(visited)를 추가로 선언해주어야 한다. 순열 1) 뽑은..

[JAVA 중급 스터디 - 7~9회차] 상속

상속 상속이란? 기존 클래스의 속성을 물려 받아, 새로운 클래스를 생성하는 것 extends : java에서 상속을 위해 사용하는 키워드 하나의 대상만 선택 가능. (단일상속만 지원) java는 다중상속을 지원하지 않음! 해결 방안 : implements 키워드를 이용한 인터페이스의 다중구현 으로 해결 단일 상속 vs. 다중 상속 1) 단일 상속 2) 다중 상속 자바가 다중상속을 지원하지 않는 이유 - 다이아몬드 문제 발생 가능성 때문 1) GrandFather 클래스에 memberMethod() 라는 이름의 메소드가 있다고 가정하자. 2) FatherA와 FatherB가 각각 memberMethod() 오버라이딩하여 구현했다. 3) FatherA와 FatherB를 모두 상속받은 Son 클래스는 어떤 부..

Java/문법 2024.03.20

[JAVA 중급 스터디 - 6회차] final

final final 키워드 처음 정의된 상태가 변하지 않도록 보장한다. class, method, 변수 등 여러 곳에 붙을 수 있다. final final + 지역변수 final을 지역 변수에 설정할 경우, 최초 한번만 할당 가능 이후에 변수의 값을 변경하면 컴파일 오류 발생 final 지역변수를 선언시 바로 초기화한 경우, 이미 값이 할당되없으므로 이후에 값 재할당 불가능 final + 매개변수 매개변수에 final이 붙으면 메서드 내부에서 매개변수 값의 변경이 불가능 메서드 호출시점에 사용된 값이 끝까지 사용됨 public class FinalLocalMain { public static void main(String[] args) { //final 지역 변수1 final int data1; dat..

Java/문법 2024.03.20

[JAVA 중급 스터디 - 4~5회차] static

static 변수 static static 키워드는 주로 멤버 변수와 메서드에 사용된다. static의 필요성 static 변수는 쉽게 이야기해서 클래스인 붕어빵 틀이 특별히 관리하는 변수이다. 붕어빵 틀은 1개이므로 클래스 변수도 하나만 존재한다. 반면, 인스턴스 변수는 붕어빵인 인스턴스의 수 만큼 존재한다. static 변수 public class Data { public String name; public static int count; //static } 멤버변수는 static이 붙은 것 / 아닌 것으로 분류한다. 인스턴스 변수 static이 붙지 않은 멤버 변수 ex. name 인스턴스를 생성해야만 사용 가능 인스턴스에 소속됨 인스턴스를 만들 때마다 생성됨 클래스 변수 (정적 변수, static..

Java/문법 2024.03.20

[JAVA 중급 스터디 - 3회차] 자바의 메모리 구조

스택/힙/메서드 영역 붕어빵과 붕어빵틀에 비유 자바의 메모리 구조는 크게 스택 영역, 메서드 영역, 힙 영역 3개로 나눌 수 있다. 메서드 영역 클래스 정보를 보관하는 영역. 이때, 클래스 정보 == 붕어빵 틀 스택 영역 실제 프로그램이 실행되는 영역 메서드를 실행할 때마다 하나씩 쌓인다. 힙 영역 객체(인스턴스)가 생성되는 영역 new 명령어를 사용하면 이 영역이 이용됨 붕어빵 틀로부터 생성된 붕어빵이 존재하는 공간! 배열도 이 영역에 생성됨 메서드 영역 프로그램을 실행하는데 필요한 공통 데이터를 관리 클래스 정보, static 영역, 상수 풀이 있음 프로그램의 모든 영역에서 메서드 영역이 공유된다.클래스 정보 모든 실행 코드가 존재 (클래스의 실행 코드(byte 코드), 필드, 메서드와 생성자 코드 ..

Java/문법 2024.03.09

[JAVA 중급 스터디 - 2회차] 접근 제한자와 캡슐화

접근 제한자 접근 제한자는 외부로부터 데이터를 보호하고, 외부에는 불필요한(내부적으로만 사용되는) 부분을 감추기 위해 사용한다. 접근제한자의 종류 접근 제한자에는 public, protected, default, private이 있다. 생성자, 메서드, 필드의 접근 제한자로는 public, protected, default, private 이 모두 가능하다. 클래스의 접근 제한자로는 private, public 만 가능하다. public > protected > default > private 순으로 많은 접근을 허용함 private 모든 외부 호출을 막음 클래스 안으로 속성과 기능을 숨길 때 사용 외부 클래스에서 private 클래스 내부의 기능을 호출할 수 없음 default (=package-pri..

Java/문법 2024.03.08

[JAVA 중급 스터디 - 1회차] 기본형/참조형, Wrapper Class생성자, 패키지

자바 중요 문법 빠르게 반복하는 스터디를 진행하게 됐다!! 👩‍💻 너무 감사하게도 팀장님이 자료 공유 + 강의까지 해주신다구 하셔서 이제 내가 해야할 건 열심히 공부하는 것 뿐 👽 기본 개념 다지기 기본형과 참조형 기본형 - Primitive Type boolean, char, byte, short, int, long, float, double 기본형 변수로, 실제로 직접 사용할 수 있는 값이다. (실제 값이 저장됨) null값이 존재하지 않는다. 기본값이 정해져 있기 때문! primitive type 기본값 boolean false char '\u0000' byte 0 short 0 int 0 long 0L float 0.0F double 0.0 ❓ primitive type에 null값, 아예 불가능..

Java/문법 2024.03.08

[Java] 배열의 공통 원소 집합 구하기

어떤 배열에서 존재하는 원소들의 집합을 구하고 싶다. 즉, 중복을 제거하고 싶다. 예를 들어, [1, 3, 2, 1, 4, 5, 1, 4] 라는 배열을 {1, 2, 3, 4, 5}로 만들고 싶은 것이다. 그렇다면 자바에서 배열을 집합으로 변경할 수 있는 함수가 있을까? 없다. 배열을 List 객체로 변환해주어 HashSet의 생성자 파라미터로 넣어주면 된다. 그렇게 되면 Set 객체는 중복을 허용하지 않기 때문에 배열의 중복이 제거된다. import java.util.*; public class Main { public static void main(String[] args) { String[] arr = { "a", "b", "c", "a", "c" }; Set set = new HashSet(Arra..

Java/문법 2024.03.02

[백준] 25916번 - 싫은데요

https://www.acmicpc.net/problem/25916 25916번: 싫은데요 $6$번째 구멍부터 $8$번째 구멍까지 막으면 총 $9$의 부피를 소모하고, 최대값인 $9$를 출력한다 www.acmicpc.net 예제는 통과하는데 계속 틀렸다고 해서 며칠 동안 계속 삽질했다.. ㅠ.ㅠ 구글링 해도 원하는 알고리즘대로 푼 글이 없어서 답답했는데 같은 투포인터 유형의 다른 문제를 풀다가 해답을 찾았다! 아래 글대로 풀었더니 풀렸다.. 감사합니다😭 https://maivve.tistory.com/223 (JAVA) 백준 2003번 : 수들의 합2 --- [투포인터] https://www.acmicpc.net/problem/2003 2003번: 수들의 합 2 첫째 줄에 N(1≤N≤10,000), M(..