[알고리즘] Java로 배우는 Merge Sort(합병정렬, 병합정렬) - feat.백준(수 정렬하기2)
·
알고리즘
알고리즘을 시작할 때 가장 먼저 접하게 되는 주제는 정렬(Sorting)이다.여러가지 정렬 알고리즘이 있지만 병합정렬은 시간 복잡도가 항상 O(nlogn)으로 안정적이고 효율적이며 성능도 좋다.병합정렬은 재귀적으로 배열을 계속 반으로 나누기 때문에 분할하는 단계는 배열의 크기 n에 대해 log₂n번 실행된다. 참고: 백준 문제를 사용해서 글을 작성했으나 병합정렬로 수 정렬하기2를 풀면 시간초과가 나오므로 해당 문제는 언어에 내장된 함수를 써야함. 수 정렬하기 2 답은 더보기 클릭.더보기import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.InputStreamReader;import java.io.OutputStreamWrit..
[JAVA] 객체지향 - 디폴트 메서드, static 메서드
·
Back-End/Java
[작성일: 2023. 01. 31] 목차 디폴트 메서드, static 메서드인터페이스에 디폴트 메서드, static 메서드 추가 (JDK 1.8부터)인터페이스에 새로운 메서드(추상 메서드)를 추가하기 어려움.해결책: 디폴트 메서드(default method)디폴트 메서드는 인스턴스 메서드(인터페이스 원칙 위반, 추상메서드가 아닌 예외상황 발생)interpace MyInterface { void method(); void newMethod(); // 추상메서드 //기존에 있던 인터페이스들이 이 추상메서드가 추가되면서 전부 수정하는 번거로움이 있음.}// ⬇️interface MyInterface { void method(); default void newMethod() {} // 추상메서드가 아니..
[JAVA] 객체지향 - 인터페이스
·
Back-End/Java
[작성일: 2023. 01. 30] 목차 인터페이스(Interface)추상 메서드의 집합(프로그래밍 관점) 구현된 것이 전혀 없는 설계도 껍데기(모든 멤버가 public) ➡️객체를 만들 수 없음.하나의 시스템을 구성하는 두 개의 요소, 또는 두 개의 다른 시스템이 상호 작용을 할 수 있게 하는 접속 경계접속하기 위한 하드웨어, 소프트웨어, 조건, 규약 등을 포괄적으로 가리킴.interface 인터페이스명 { // iv, cv 등 변수는 가질 수 없음. public static final 타입 상수이름 = 값; // 상수 public abstract 메서드명(매개변수 목록); // 추상 메서드({}이 없음.)} // 모든 인터페이스의 멤버는 public만을 가짐.interface PlayingCard..
[JAVA] String
·
Back-End/Java
[작성일: 2023. 01. 30] 목차 String 배열의 선언과 생성import java.util.Arrays;class Ex5_1_tmp { public static void main(String[] args) { // index: 0 ~ 3-1, 0~2 String[] strArr = { "가위", "바위", "보" }; // 문자열 3개 배열 생성 System.out.println(Arrays.toString(strArr)); for(int i=0; i     String 클래스final 클래스로 상속 불가한 클래스new String("~~"), "~~" 두 가지 방법으로 생성 가능하며, 둘 중에서는 "~~" 방식이 자원의 재사용으로 효율적임.char[]와 메서..
[JAVA] 객체지향 - 추상클래스, 추상메서드
·
Back-End/Java
[작성일: 2023. 01. 29] 목차 추상 클래스(abstract class)미완성 설계도(부족한 부분이 있음.)미완성 메서드를 갖고 있는 클래스클래스 앞에 abstract를 붙여줘야 함. (추상 메서드가 존재한다고 추론 가능)다른 클래스 작성에 도움을 주기 위한 것. 인스턴스 생성 불가.코드의 관리에 용이함.상속을 받으며 추상클래스가 구체적이게 됨. (단계별로 관리 가능)abstract class Player { // 추상클래스 abstract void play(int pos); // 추상메서드(몸통{}이 없는 미완성 메서드) abstract void stop(); // 추상메서드}Player p = new Player(); // 에러. 추상클래스의 인스턴스 생성 불가 상속을 통해 추상 메서드를..
[JAVA] 객체지향 - 다형성
·
Back-End/Java
[작성일: 2023. 01. 29] 목차 다형성(Polymorphism)여러 가지 형태를 가질 수 있는 능력조상 타입 참조변수로 자손 타입 객체를 다루는 것자손 타입의 참조변수로 조상 타입의 객체를 가리킬 수는 없음.int i = 10;double d = i;double b = 10.34;int j = b; // (X) 넓은 곳에서 좁은 곳으로 갈 수 없음.INT J = (int)b; // 가능.class Tv { boolean power; int channel; void power() { power = !power; } void channelUp() { ++channel; } void channelDown() { --channel; }}class SmartTv extends Tv { /..