java

    [백준] 2750 - 수 정렬하기: (자바/Java) 선택 정렬(Selection Sort)

    문제 N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오. 입력 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. 출력 첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다. 선택 정렬로 result 배열을 새로 만들어 정렬하였다. 이중 for loop를 돌며 가장 작은 원소를 맨 앞으로 두는 과정을 반복한다. 시간 복잡도는 O(n^2)로, 상대적으로 비효율적인 알고리즘이다. package BOJ0726; import java.util.Scanner; public class BOJ_2750_수정렬 { public static ..

    [백준] 11651 - 좌표 정렬하기 2 (자바/Java) : Merge Sort

    문제 2차원 평면 위의 점 N개가 주어진다. 좌표를 y좌표가 증가하는 순으로, y좌표가 같으면 x좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. 출력 첫째 줄부터 N개의 줄에 점을 정렬한 결과를 출력한다. 이번에도 merge sort를 이용하여 풀었다. Collection의 sort와 comparable을 이용하면 좀 더 간단하게 될 것 같음! 비교하는 부분만 y 좌표가 같으면 x 좌표를 다시 비교하도록 구현하였다. package BOJ072..

    [백준] 1427 - 소트인사이드 (자바/Java) : 계수 정렬(Counting Sort)

    문제 배열을 정렬하는 것은 쉽다. 수가 주어지면, 그 수의 각 자리수를 내림차순으로 정렬해보자. 입력 첫째 줄에 정렬하려고 하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다. 출력 첫째 줄에 자리수를 내림차순으로 정렬한 수를 출력한다. 자리수를 내림차순으로 정렬한다고 해서 계수 정렬(Counting Sort)가 생각 났다 계수 정렬은 O(N)의 시간 복잡도를 가지는 매우 빠른 정렬으로, 입력되는 숫자들의 범위가 작을수록 사용하기 좋다. 이 문제는 각 자리수를 정렬하는 것이니 0~9까지만 정렬하면 되기 때문에, 계수 정렬을 사용하여 빠른 정렬이 가능하다. 숫자를 String으로 입력 받아, charAt(i)를 이용하여 각 자리수를 int로 바꾸어 주었다. 그리고 0~9까지의..

    [자바/Java] 클래스 다형성(Polymorphism)

    다형성 Animal > Person > Student 학생 객체 → 사람 관점 → 학생 관점 (O) 사람 객체 → 사람 관점 → 학생 관점 (X) Person s2 = new Student(); // 조상 클래스의 타입(Person)으로 자식 클래스 객체(Student)를 참조 //s2.study(); // 오류남.. Person으로 보고 있음 Student st = new Person(); // 참조 불가능 상속 관계에 있을 때 조상 클래스의 타입으로 자식 클래스 객체를 참조할 수 있다. 활용 다른 타입의 객체를 다루는 배열 Person[] persons = new Person[3]; persons[0] = new Person(); persons[1] = new Student(); persons[2] ..

    [자바/Java] 클래스(Class), 상속, 생성자(Constructor), 오버라이딩(Override)

    상속 확장성, 재사용성: 부모의 생성자와 초기화 블록은 상속x 클래스 선언 시 extends 키워드를 명시: 자바는 다중 상속X 관계 부모(상위, Super) 클래스 : Person 자식(하위, Sub) 클래스 : Student 자식 클래스는 부모 클래스의 멤버변수, 메소드를 자신의 것처럼 사용할 수 있다 Object 클래스는 모든 클래스의 조상 클래스 -별도의 extends 선언이 없는 클래스는 extends Object가 생략 super 키워드생성자 호출 순서: 부모 생성자 호출 → 자식(호출된 클래스) 생성자 호출 public class Person { String name; int age; public Person() { System.out.prinln("Person 생성자"); } public ..

    [자바/Java] 싱글톤(Singleton) 패턴, Static

    생성자가 여러 차례 호출되더라도 실제로 생성되는 객체는 하나이고, 최초 생성 이후에 호출된 생성자는 최초의 생성자가 생성한 객체를 리턴 public class Manager { private static Manager = manager = new Manager(); private Manager() {} public static Manager getManager() { return manager; } 기본 생성자를 private으로 → 외부에서 인스턴스를 새로 생성할 수 없음 getManager() 메서드는 인스턴스 생성과 상관없이 호출할 수 있어야 하기 때문에 반드시 static 용도/쓰임 여러 클래스에서 동시에 공유할 때 ex. 게임 - score cf. static class와 차이: Singleto..

    [자바/Java] 배열, 1차원 배열, 2차원 배열 정리

    [자바/Java] 배열, 1차원 배열, 2차원 배열 정리

    배열 참조형 data type: String JVM 메모리 영역 스택 - 힙 참조형: String, 배열 → heap에 주소 값을 갖고 있음, 주소 1을 stack에 저장하여 힙의 값을 참조함 new로 생성: stack에 생성됨 String str1 = "서울"; //literal String str2 = new String("서울"); //object 객체 String str3 = str2; ==로 비교할 때, true 나올 수도 있음 배열의 생성과 초기화 자료형[] 배열이름 = {값1, 값2, 값3, 값4} 선언과 동시에 초기화 배열이름 = new 자료형[] {값1, 값2, 값3, 값4} 배열 생성 및 값 초기화 배열이름 = new 자료형[길이]; 배열 생성 (자료형의 초기값으로 초기화) 타입 Dat..

출처: https://gmnam.tistory.com/157 [Voyager:티스토리]