자바

요즘 백준에서 data_structures 관련 문제를 풀고있다. 여기는 자료구조인 큐, 스택, 힙 등을 이용하는 문제들이 많기 때문에 큐, 스택, 힙에 대한 사용법을 충분히 숙지해야 문제를 잘 풀 수 있다! 그래서 오늘은 힙 사용법을 정리해보려고 한다. 힙(Heap)이란? 여러 개의 값 중에서 가장 크거나 작은 값을 빠르게 찾기 위해 만든 이진트리 힙은 여러 개의 값 중 최솟값을 찾거나, 최댓값을 찾을 때 이용된다 최솟값을 찾기위한 힙을 최소힙(Min heap)이라고 함 최댓값을 찾기위한 힙을 최대힙(Max heap)이라고 함 힙의 저장방식(최소 힙) 힙은 완전 이진 트리의 형태를 띈다 최소 힙은 부모의 값이 항상 자식보다 작다 최대 힙은 부모의 값이 항상 자식보다 크다 최소힙에서의 삭제 = 최솟값 뽑..
Lower bound, Upper bound란? 그림을 보면 쉽게 이해할 수 있다. lower bound: 찾고자 하는 값이 처음 나타나는 위치 upper bound: 찾고자 하는 값 바로 뒤 위치 원래 이진탐색 코드 //오름차순 정렬된 arr에서 target값을 찾아 인덱스를 반환하는 함수 private int findIdx(int[] arr, int target) { int start = 0; int end = arr.length; while (start target end ..
https://www.acmicpc.net/problem/1254 1254번: 팰린드롬 만들기 동호와 규완이는 212호에서 문자열에 대해 공부하고 있다. 규완이는 팰린드롬을 엄청나게 좋아한다. 팰린드롬이란 앞에서부터 읽으나 뒤에서부터 읽으나 같게 읽히는 문자열을 말한다. 동호는 www.acmicpc.net 내 풀이 설명 나올 수 있는 가장 짧은 경우는 짝수길이일 때: 짝수길이 팰린드롬으로 만들어지는 경우 (ex. baab) 홀수길이일 때: 홀수길이 팰린드롬으로 만들어지는 경우 (ex. bbabb) 문자열 길이가 L이라면 L/2 - 1 인덱스부터 짝수길이 팰린드롬/ 홀수길이 팰린드롬을 만들어보고 인덱스를 하나씩 늘려가면서 비교한다 L/2 - 1 인덱스가 가장 짧은 경우이고 인덱스가 하나씩 늘어날수록 팰린드..
import javax.swing.*;import java.awt.*;class MyWin extends JFrame { public MyWin() { setTitle("Let's study Java"); setSize(400, 200); setDefaultCloseOperation(EXIT_ON_CLOSE); Container contentPane = this.getContentPane(); contentPane.setBackground(Color.magenta); setVisible(true); }}public class Ex{ public static void main(String[] args) { new MyWin(); }}JFrame에 바로 setBackground 설정이 안..
저는 클래스를 4개 만들었습니다. 1. MyWin: JFrame을 상속받는 클래스 2. NorthPanel 3. CenterPanel 4. SwingEx: main을 포함하는 클래스 import javax.swing.*; import java.awt.*; 1) MyWin클래스 class MyWin extends JFrame { public MyWin() { super("window"); setSize(300, 200); setDefaultCloseOperation(EXIT_ON_CLOSE); setVisible(true); } } main을 간결하게 만들기 위해 여기다가 넣어줬습니다. 2) NorthPanel 클래스 class NorthPanel extends JPanel { public NorthPan..
import java.util.*; public class HV { public static Vector hashToVector(HashMap h) { Vector v = new Vector(); Set s = h.keySet(); Iterator it = s.iterator(); while (it.hasNext()) { String key = it.next(); v.add(h.get(key)); } return v; } public static void main(String[] args) { HashMap h = new HashMap(); h.put("범죄", "112"); h.put("화재", "119"); h.put("전화번호", "114"); Vector v = hashToVector(h); fo..
import java.util.*; public class app { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); Vector v = new Vector(); for (int i = 0; i max) max= temp; } System.out.println("가장 큰 수는 " + max); } } 저는 iterator를 이용했습니다! 어차피 순차적으로 검색해야하니까요. double max = -99999999; for (int i =0; i most) { mostyear = 2000 + i; most = nxt - pre; } } System.out.println("가장 키가 많이 자란 년도는 " + ..
교재: 명품 java essential/ 7단원 컬렉션과 제네릭 일단 Word클래스의 코드입니다. class Word { String eng; String kor; public Word(String eng, String kor) { this.eng = eng; this.kor = kor; } } 영어와 그에 대응하는 한국어를 멤버변수로 넣어줬습니다. public 클래스인 WordQuiz에는 1개의 필드, 4개의 멤버변수를 만들어줬습니다. private Vector v; Word클래스 객체의 벡터 public WordQuiz() 생성자. 벡터v에 미리 값을 넣어준다.(책에 있는 것과 같음) private Word[] shuffle(Word[] choice) 정답을 섞은 보기 4개를 Set배열에 넣어줬는데,..
교재: 명품 자바 에센셜 class Circle { private int x, y, radius; public Circle(int x, int y, int radius) { this.x = x; this.y = y; this.radius = radius; } public String toString() { return "(" + x +", " + y + ") 반지름 " + radius; } @Override public boolean equals(Object obj) { if (((Circle)obj).radius == radius) return true; else return false; } } public class CircleManager { public static void main(String[..
class MyPoint { public MyPoint(int x, int y) { this.x = x; this.y = y; } @Override public String toString() { return "MyPoint (" + x +", " + y +")"; } private int x, y; } public class app { public static void main(String[] args) { MyPoint a = new MyPoint(3, 20); System.out.println(a); } } toString만 오버라이딩 해주면 됩니다~~ 함수 매개변수랑 반환값은 java se 15 oracle에 Object클래스의 메소드를 검색해서 복붙해줬습니다! 똑같아야 오버로딩이 아니라 오버라이..
fladi
'자바' 태그의 글 목록