분류 전체보기 118

[백준 2110] - 공유기 설치 (JAVA) + Parametric search 알고리즘

[문제] 출처 - https://www.acmicpc.net/problem/2110 2110번: 공유기 설치 첫째 줄에 집의 개수 N (2 ≤ N ≤ 200,000)과 공유기의 개수 C (2 ≤ C ≤ N)이 하나 이상의 빈 칸을 사이에 두고 주어진다. 둘째 줄부터 N개의 줄에는 집의 좌표를 나타내는 xi (0 ≤ xi ≤ 1,000,000,000)가 www.acmicpc.net [문제풀이 전] 이코테책의 Q29번 문제이기도 합니다. 해당 문제를 풀 때는 단순 이분 탐색을 사용해서 푸는 줄 알고 있었는데, 이것을 응용해서 푸는 것을 Parametric Search라는 기법이 있는 것을 알게 되었습니다. Parametric Search 정의 - 조합 최적화를 위한 알고리즘의 설계 및 분석에서 파라매트릭서치..

알고리즘 정리 2022.02.23

인터페이스(interface) - JAVA

인터페이스(inteface) 란? 인터페이스는 객체를 어떻게 구성해야 하는지 정리한 설계도로 일종의 추상클래스입니다. 하지만 추상클래스보다 추상화의 정도가 높아서 추상클래스와 달리 몸통을 가지지 않습니다. 오직 추상메서드와 상수만을 멤버로 가질 수 있습니다. 인터페이스는 그 자체만으로 사용되기보다 다른 클래스를 작성하는데 도움을 줍니다. 선언방법 interface 인터페이스이름 { public statc final 타입 상수이름 = 값; public abstarct 메서드이름(매개변수목록); } - 모든 멤버변수는 public static final 이어야 하며, 이를 생략할 수 있다. - 모든 메서드는 public abstract 이어야 하며, 이를 생략할 수 있다. 구현방법 인터페이스도 추상클래스 처..

다형성(polymorphsim) - JAVA

다형성이란? 다형성은 객체지향프로그래밍 개념 중요한 특징 중의 하나이다. 이유는 프로그램을 유연하고 변경이 용이하게 만들기 때문에 대규모 소프트웨어 개발에 많이 사용되기 때문입니다. 그래서 다형성을 정의해보면 '여러 가지 형태를 가질 수 있는 능력' 을 의미합니다. 자바에서 한 타입의 참조변수로 여러 타입의 객체를 참조할 수 있도록 함으로 다형성을 프로그램적으로 구현하였습니다. 부모 타입의 참조변수로 자식클래스의 인스턴스를 참조할 수 있도록 만든 것입니다. 이때 참조 변수가 사용할 수 있는 멤버의 개수는 인스턴스의 멤버 개수보다 같거나 적어야 참조가 가능합니다. 말이 어렵게 느껴지면 부모는 자식을 품을 수 있지만, 자식은 부모를 품을 수 없다 라고 생각하시면 됩니다. class Parent { ... }..

오버라이딩(overriding) + super( ) - JAVA

오버라이딩이란? 부모 클래스로부터 상속받은 메서드의 내용을 재정의(변경) 하는 것을 오버라이딩이라고 한다. 물론 상속받은 메서드를 그대로 사용해도 되지만 자식클래스에서 변경해야 하는 경우가 많다. 이렇게 변경이 이루어지는 경우에 부모메서드를 오버라이딩합니다. *오버라이딩 사용 조건 오버라딩은 메서드를 새로 만들게 아니고 내용만을 새로 작성하는 것입니다. 메서드의 선언부는 부모와 완전히 일치해야 합니다. 그래서 다음과 같은 조건을 만족해야합니다. 1. 자식 클래스의 오버라이딩 하려는 메서드는 부모 클래스의 메서드와 - 이름이 같아야 한다. - 매개변수가 같아야 한다. - 반환타입이 같아야 한다. 2. 접근 제어자는 조상클래스의 메서드보다 좁은 범위로 변경할 수 없다. - ex) 부모클래스 : public ..

상속(inheritance) - JAVA

상속이란? 기존의 클래스를 재사용하여 새로운 클래스를 작성하는 것입니다. 상속이라는 말 그대로 누군가에게 자신의 것을 물려주는 것을 의미합니다. 상속을 통해서 클래스를 작성하면 코드를 공통적으로 관리할 수 있기 때문에 코드의 추가 및 변경이 매우 용이하며, 적은 양으로 코드로 작성이 가능해집니다. 이러한 특징은 코드의 중복을 제거하여 프로그램의 생산성과 유지보수에 크게 기여를 합니다. 상속의 사용 방법 - 'extends' ex) class 자식클래스명 extend 부모클래스명 { . . . } , class A extend B { . . . } 두 클래스는 서로 상속 관계에 있다고 하며, 상속해주는 클래스를 부모클래스 상속받는 클래스를 자식 클래스라고 합니다. 위에서 말씀드린 것처럼 코드를 공유하기 때..

생성자 (Constructor) - JAVA

생성자란? 생성자는 인스턴스가 생성될 때 호출되는 '인스턴스 초기화 메서드' 입니다. 인스턴스 변수의 초기화 작업에 주로 사용되며, 인스턴스 생성 시에 반드시 실행 되어야 할 작업을 위해서도 사용됩니다. 연산자 new가 인스턴스를 생성하는 것이지 생성자가 인스턴스를 생성하는 것은 아닙니다. 그러면 생성자는 어떻게 만드는 것일까? 다음과 같은 조건이 있습니다. 1. 생성자의 이름은 클래스의 이름과 같아야 한다. 2. 생성자는 리턴 값이 없다. 추가로 생성자도 오버로딩이 가능하므로 여러 생성자가 존재하게 만들 수 있습니다. public class ConstructorEx { public static void main(String[] args) { Car k3 = new Car(); Car k5 = new C..

오버로딩(overloading) - JAVA

오버로딩이란? 메서드도 변수와 마찬가지로 같은 클래스 내에서 서로 구별이 되어야 합니다. 자바에서 같은 이름을 가진 메서드가 있어도 매개변수의 개수 또는 타입이 다르면, 같은 이름을 사용해서 메서드를 정의할 수 있습니다. 즉, 한 클래스 내에 하나의 메서드 이름으로 여러 기능을 구현하는 것이 오버로딩 입니다. 하지만 메서드의 이름이 같다고 해서 오버로딩이라 하지는 않고 아래 두 조건을 충족해야 합니다. 1. 메서드 이름이 같아야 한다. 2. 매개변수의 개수 또는 타입이 달라야 한다. * 주의할 점은 해당 조건을 만족 시키지 못하면 컴파일 에러가 나고, 오버로딩은 오직 매개변수에 의해서 구별 되기 때문에 반환 타입은 오버로딩 구현에 영향을 주지 못합니다. 오버로딩의 대표적인 예는 println 메서드입니다..

[백준 10825] - 국영수(JAVA)

출처 - https://www.acmicpc.net/problem/10825 10825번: 국영수 첫째 줄에 도현이네 반의 학생의 수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 한 줄에 하나씩 각 학생의 이름, 국어, 영어, 수학 점수가 공백으로 구분해 주어진다. 점수는 1보다 크거나 같고, 1 www.acmicpc.net [문제] [문제풀이 전] 이코테 정렬파트에 나온 문제입니다. 문제를 봤을 때 학생 클래스 만들어서 요구한대로 정렬을 해주니 간단히 풀린 문제여서 크게 어렵지는 않았습니다. Comparator에 익숙치 않았다면 힘들었을지도..? [문제풀이] 문제의 요구번호대로 따라가서 정렬기준을 오버라이드 해주면 쉽게 풀리는 문제입니다. 만약 Comparator 를 모르신다면 http..

백준 문제풀이 2022.02.13

[백준 18428] - 감시 피하기(JAVA)

출처 - https://www.acmicpc.net/problem/18428 18428번: 감시 피하기 NxN 크기의 복도가 있다. 복도는 1x1 크기의 칸으로 나누어지며, 특정한 위치에는 선생님, 학생, 혹은 장애물이 위치할 수 있다. 현재 몇 명의 학생들은 수업시간에 몰래 복도로 빠져나왔는데, 복 www.acmicpc.net [문제풀이 전] 이코테 DFS&BFS 20번 문제이기도 합니다. 연구소 문제를 먼저 풀어봐서인지 쉽게 해결했습니다. 똑같이 3개의 장애물을 모든 경우에 세우고 감시의 여부를 구해야하는데 여기서 신경써야 할 점인게 선생님끼리 감시가 겹쳤을 때 처리만 잘 해준다면 될 것 같습니다. [문제풀이] N제한이 작아 모든 배열에 기둥을 3개씩 설치하는 경우는 36 C 3 으로 10,000 이..

백준 문제풀이 2022.02.10

[백준 18405] - 경쟁적 전염(JAVA)

[문제] https://www.acmicpc.net/problem/18405 18405번: 경쟁적 전염 첫째 줄에 자연수 N, K가 공백을 기준으로 구분되어 주어진다. (1 ≤ N ≤ 200, 1 ≤ K ≤ 1,000) 둘째 줄부터 N개의 줄에 걸쳐서 시험관의 정보가 주어진다. 각 행은 N개의 원소로 구성되며, 해당 위치 www.acmicpc.net [문제풀이 전] 이코테 책뒤에 DFS&BFS 17번 문제로 나온 문제이기도 하다. 백준에서 정답률 28%로 낮은 정답률을 보유하고 있는데 요즘 스터디의 효과를 보는지 한번에 통과해서 기분이 좋았다. 아마 이 문제에서 접근하기 어려운점이 모든 바이러스는 1초마다 상, 하, 좌. 우 방향으로 증식하는데 바이러스는 매 초마다 낮은 종류의 바이러스가 증식하고 그 시..

백준 문제풀이 2022.02.09