본문 바로가기

Java

(110)
[알고리즘/덱(Deque)] 스택, 큐, 덱 - 개념, Python 주요 문법, deque 객체 지원 메소드 🥞 팬케이크를 생각해봐스택LIFO팬케이크가 세 장 있고, 그 다음 팬케이크가 들어와야 한다면?맨 위에 새로운 팬케이크를 얹겠지이 팬케이크를 전부 다 먹어치우고 싶다면?위에서부터 먹어 없애겠지즉, 맨 마지막에 구운 팬케이크부터(Last In) 먹어서 없애버린다(First Out)LIFO 스택 = 배열이 수직으로 쌓여 있는 것이 배열에선 요소를 추가하거나 삭제할 때 맨 위에서부터 차례대로 할 수 있음예시브라우저 뒤로가기Cntl + z 버튼 주요 문법문법설명append()배열 맨 마지막에 항목 추가pop()배열 맨 마지막 항목을 제거하고 반환함stack.append("햄토리")print(stack) # ['도토리', '밤토리', '**햄토리']**stack.pop() # '햄토리'를 반환하면서 삭제print..
[알고리즘/그리디] 각 상황에서 최적인 방법 선택, 예시 문제(거스름돈, 1이 될 때까지, 곱하기 혹은 더하기, 모험가 길드) 들어가며Q. 노드에서 가장 합이 높은 방법을 선택해 보세요. 그리디 = 각 상황에서 최적인 방법 선택💡 즉, 현재 상황에서 지금 당장 좋은 방법 pick!핵심: 선택에 대한 정당성 분석문제에서 요구하는 최적의 해를 진짜 구할 수 있는지 검토하는 것(∴ 일반적인 상황에서 그리디 알고리즘은 최적의 해를 보장하지 않음)However! 그리디 문제에서는 그리디 알고리즘을 써야 최적의 해가 나옴요약: 선택 → 정당성 → 해답 검토 [예시] 거스름돈 문제거스름돈 문제가장 큰 화폐 단위부터 돈을 거슬러 주면 됨500원 → 100원 → 50원 → 10원Why? 동전 중 큰 단위가 항상 작은 단위의 배수이므로, 작은 단위의 동전들을 종합해 다른 해가 나올 수 없기 때문500 == 1005 == 5010 == 10*50..
[Java] 인터페이스 - 개념, 일부 구현, 다중 구현, default & static 메서드 개념왜 써야 돼?💡 다중 구현을 통한 자유로운 상속 관계 ⇒ 클래스의 다형성보다 다채롭고 자유롭게 사용 가능프로그램을 설계하고 조금 더 유연한 프로그램을 만들기 위함추상화, 상속과 더불어 다형성이라는 객체 지향(OOP)의 특징을 구현하는 핵심인터페이스의 다형성부모클래스 타입으로 자식클래스 타입을 포함시킬 수 있음(상속) ⇒ 인터페이스 타입으로 그 인터페이스를 구현한 클래스 객체를 사용할 수 있음 interface Keyboard { }class Logitec_Keyboard implements Keyboard { }class Samsung_Keyboard implements Keyboard { }class Apple_Keyboard implements Keyboard { }public class Mai..
[Java] System.out.printf(서식 지정자) 1. System.out.printf기본 형식: System.ouot.printf("출력 포맷", 인자, 인자, ...)의 형태%f로만 출력할 때소수점 아래의 자릿수가 여러 개 표현되는데, 이를 정형화하는 방법은 다음과 같습니다.%전체 자릿수 + . + 소수점 자릿수 + f%4.2f: 전체 자릿수를 4개, 소수점은 아래 2자리까지 표현하라는 의미입니다. 2. 서식 지정자종류설명%dint 정수형 문자%ffloat, double 실수형 문자%sString 문자열%cchar 문자%o8진 정수 출력%x16진 정수 출력%%퍼센트 표시%n개행문자 표시System.out.printf("%d와 %4.2f", 10, 3.2582);10, 3.26
[Java] 핵심 기본편 - 익명 클래스, 람다와 스트림, 예외 처리(Try Catch, Throw, Finally, Try With Resource, 사용자 정의 예외, Throws) 1. 익명클래스, 람다와 스트림익명클래스익명클래스: 한 번만 사용되는 이름 없는 클래스main 메소드에서 클래스를 호출한 뒤 {@Override}// Person 클래스class Person { public void introduce() { System.out.println("사람입니다"); }}// main 메소드public static void main(String[] args) { Person person = new Person(); person.introduce(); // 사람입니다}// 익명 클래스 - Person 클래스의 introduce라는 동작을 변경할 수 있음public static void main(String[] args) { Person per..
[Java] 핵심 기본편 - 추상클래스와 인터페이스, 제네릭스(제네릭스, 제네릭 클래스, Wrapper 클래스, ArrayList, LinkedList, HashSet, HashMap, Iterator) 1. 추상클래스와 인터페이스추상클래스추상클래스: 아직 완성되지 않은 클래스abstract class 클래스명 {}아래 Shape 클래스는 완성되지 않은 추상 클래스지만, 상속하는 자식 클래스에서 메소드를 완성시켜 추상 클래스를 활용할 수 있음 // 추상 클래스abstract class Shape{ // Shape: 클래스 abstract double calculateArea(); // calculateArea: 도형 크기를 재는 메소드}// 정사각형 클래스class Square extends Shape { // Square: Shape 클래스 상속 private double s; // 한 면의 길이 public Square(double s) { this.s = s; } ..
[Java] 핵심 기본편 - 클래스(변수, 메소드, This, 생성자, Getter&Setter, 접근 제어자, 패키지, 상속, 메소드 오버라이딩, 다형성, Super, 참조, Final, 열거형) 1. 클래스클래스클래스: 데이터와 기능을 포함하는 코드 묶음, 설계도 역할객체: 클래스로부터 만들어진 실체종이접기 책이 클래스라면, 책을 보고 만든 종이학이 객체 class 클래스명{}// 클래스 Personclass Person {}// 클래스 Person으로 만든 객체 ppublic static void main(String[] args) {Person p = new Person(); // 새로운 객체를 만들기 위해서 new 키워드를 쓰고 클래스명();} 인스턴스 변수인스턴스 변수: 클래스 내에 선언된 변수class 클래스명{인스턴스 변수1 ...}변수명 뒤에 점(.)으로 인스턴스 변수에 접근 가능객체마다 서로 다른 값을 가질 수 있음// 클래스 - 인스턴스 변수class Person { Str..
[Java] 핵심 기본편 - 메소드(전달값, 반환값, 메소드 오버로딩, 변수의 범위) 1. 메소드메소드메소드: 특정 기능을 수행하기 위한 코드 묶음메소드명();메소드 호출메소드는 한 번 정의해 두면 필요한 만큼 얼마든지 사용할 수 있음// 메소드 형태접근제어나 반환형 메소드명(전달값) { 명령문1 명령문2 ...}// 예제1 (안녕? 문자열을 출력하는 print 메소드)public static void print() { System.out.println("안녕?");}public static void main(String[] args) { print(); // 메소드를 사용하기 위해선 메소드명(print)을 호출해야 함 print(); print();} 전달값전달값: Parameter, 메소드 호출 시 전달하는 값메소드 호출 시메소드명(): 괄호를 비워두면..

반응형