2020-12-25 우선 Map이란 컬렉션은 key와 value를(key와 value는 모두 객체이다.) 구성된 entry 객체를 저장하는 자료구조이다. 예를 들자면 [ Map map =... ]와 같은 코드가 작성되어 있다면 Map이라는 컬렉션에 키는 String이며, 값으로 Integer 타입의 객체가 들어가고 변수의 이름은 map이라고 해석할 수 있다. 그중에서 HashMap은 Map 컬렉션을 구현하는 대표적 인터페이스이다. 다만 HashMap은 hashcode와 equals 메서드를 재정의 하여 동등 객체의 처리 조건을 재정의 해야 한다. 그러면 사용법을 알아보자. package mMap; import java.util.HashMap; import java.util.Iterator; import ..
2020-12-24 문제 0과 1로만 이루어진 행렬 A와 행렬 B가 있다. 이때, 행렬 A를 행렬 B로 바꾸는데 필요한 연산의 횟수의 최솟값을 구하는 프로그램을 작성하시오. 행렬을 변환하는 연산은 어떤 3*3크기의 부분 행렬에 있는 모든 원소를 뒤집는 것이다. (0 -> 1, 1 -> 0) 입력 첫째 줄에 행렬의 크기 N M이 주어진다. N과 M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 행렬 A가 주어지고, 그 다음줄부터 N개의 줄에는 행렬 B가 주어진다. 출력 첫째 줄에 문제의 정답을 출력한다. 만약 A를 B로 바꿀 수 없다면 -1을 출력한다. import java.io.BufferedReader; import java.io.IOException; import java.io.Inp..
2020-12-23 ArrayList와 LinkedList는 언뜻 보기에는 인덱스를 이용해 객체를 저장하여 서로 비슷해 보인다. 하지만 두 list클래스들의 장단점은 명확하다. 오늘은 이 둘의 장단점을 알아보도록 하자. 구체적인 예를 들어 살펴보겠다. 우선 ArrayList의 경우 아래와 같이 처음에 6개의 객체가 있다고 가정해보자. 인덱스는 그러면 0부터 5번까지 객체가 들어 있을 것이다. 근데 아래 이미지와 같이 1번째의 객체가 remove() 메서드 (list.remove(1))를 통해서 제거가 된다면, 해당 제거된 인덱스 뒤에 위치한 객체들이 하나씩 앞으로 당겨져 온다. 그 결과 리스트의 사이즈는 5가 될 것이며, 인덱스 번호는 0 ~ 4번으로 변경되게 된다. 때문에 순서대로 객체를 추가하거나, ..
2020-12-22 기존에 Consumer와 Supplier 인터페이스는 매개 값만 있고 리턴 값은 없거나 매개 값은 없고 리턴 값만 있는 경우였다. 하지만 Operator의 경우 매개변수를 받으면서 동시에 리턴값도 가지고 있는 인터페이스다. 구체적인 사용법을 알아보자. 가장 기초적인 int형 Operator인 inIntBinaryOperator를 활용해 구체적인 예를 작성하였다. 코드는 아래와 같다. package LambdaOperator; import java.util.function.IntBinaryOperator; public class main { private static int[] scores = {60, 70, 80}; public static int check (IntBinaryOper..
2020-12-21 우선 Consumer의 함수적 인터페이스를 알아보자. 이름에서도 느껴지듯이 매개 값을 받아 소비만 하고 리턴 값을 가지지 않는다. 이러한 매개 값을 받는 메서드로는 accept ()를 가지고 있으며, 사용법은 아래와 같다. package LambdaConsumer; import java.util.function.BiConsumer; import java.util.function.Consumer; public class main { public static void main(String[] args) { Consumer consumer = t ->{ System.out.println(t +"이다."); }; //매개값만 받고 리턴값은 없는 인터페이스 consumer.accept("kin..
2020-12-19 문제 언제나 최고만을 지향하는 굴지의 대기업 진영 주식회사가 신규 사원 채용을 실시한다. 인재 선발 시험은 1차 서류심사와 2차 면접시험으로 이루어진다. 최고만을 지향한다는 기업의 이념에 따라 그들은 최고의 인재들만을 사원으로 선발하고 싶어 한다. 그래서 진영 주식회사는, 다른 모든 지원자와 비교했을 때 서류심사 성적과 면접시험 성적 중 적어도 하나가 다른 지원자보다 떨어지지 않는 자만 선발한다는 원칙을 세웠다. 즉, 어떤 지원자 A의 성적이 다른 어떤 지원자 B의 성적에 비해 서류 심사 결과와 면접 성적이 모두 떨어진다면 A는 결코 선발되지 않는다. 이러한 조건을 만족시키면서, 진영 주식회사가 이번 신규 사원 채용에서 선발할 수 있는 신입사원의 최대 인원수를 구하는 프로그램을 작성하..