전체 글
-
[Java] Comparator와 Comparable란?Java 2022. 2. 3. 00:01
Arrays.sort()를 호출하면 컴퓨터가 알아서 배열을 정렬하는 것처럼 보이지만, 사실은 Character클래스의 Comparable의 구현에 의해 정렬됩니다. Comparator와 Comprable이란? 모두 인터페이스로 컬렉션을 정렬하는데 필요한 메서드를 정의하고 있습니다. 정렬을 하는 데는 두 가지가 필요합니다. 1. 정렬 대상 2. 정렬 기준 Comparator와 Comparale은 객체 정렬에 필요한 정렬 기준을 제공하는 인터페이스입니다. 인터페이스이기 때문에 Comparable 또는 Comparator를 사용하고자 한다면 인터페이스 내에 선언된 메서드를 반드시 구현해야 합니다. 가장 중요한 것은 Comparable과 Comparator는 객체를 비교할 수 있도록 만듭니다! Comparato..
-
[백준] 1065번 : 한수 - 자바(JAVA)알고리즘/백준 2022. 2. 2. 00:01
https://www.acmicpc.net/problem/1065 1065번: 한수 어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 www.acmicpc.net 문제 해석 어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면 이를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차가 일정한 수열을 말합니다. 이때 1보다 크거나 같고 N보다 작거나 같은 한 수의 개수를 출력하는 프로그램을 만들어야 합니다. 등차수열 예시 1, 3, 5, 7, 9 (차가 2로 일정함) 10, 20, 30, 40, 50 (차가 10으로 일정함) 한수의 예시 123 24 3 15 입력..
-
[백준] 10819번 : 차이를 최대로 - 자바(JAVA)알고리즘/백준 2022. 2. 1. 00:01
https://www.acmicpc.net/problem/10819 10819번: 차이를 최대로 첫째 줄에 N (3 ≤ N ≤ 8)이 주어진다. 둘째 줄에는 배열 A에 들어있는 정수가 주어진다. 배열에 들어있는 정수는 -100보다 크거나 같고, 100보다 작거나 같다. www.acmicpc.net 문제 해석 N개의 정수로 이루어진 배열 A가 주어지면 정수의 순서를 적절히 바꿔 아래의 식의 최댓값을 구해야 한다. | A[0] - A[1] | + | A[1] - A[2] | + ....... + | A[N-2] - A[N-1] | 입력 첫째 줄에는 N이 주어진다. 둘째 줄에는 배열 A에 들어가 있는 정수들이 주어진다. 제약조건 3
-
[Java] 스트림의 생성Java 2022. 1. 31. 00:01
이전 시간에 스트림의 특징과 등장 배경에 대해서 알아보았습니다. https://junuuu.tistory.com/78?category=968252 이제 스트림의 생성법을 알아보겠습니다 스트림은 아래와 같은 주기를 가집니다. 1. 스트림 생성 2. 중간 연산 (0~ n번) 3. 최종 연산 (0~1번) Collection 인터페이스의 stream() 메서드로 컬렉션을 스트림으로 생성할 수 있습니다. List list = Arrays.asList(1, 2 ,3 ,4 ,5); Stream intStream = list.stream(); //list를 스트림으로 변환 //스트림의 모든 요소를 출력(최종연산) intStream.forEach(System.out::print); //12345 intStream.for..
-
[백준] 1655번 : 가운데를 말해요 - 자바(JAVA)알고리즘/백준 2022. 1. 30. 00:01
https://www.acmicpc.net/problem/1655 1655번: 가운데를 말해요 첫째 줄에는 백준이가 외치는 정수의 개수 N이 주어진다. N은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수이다. 그 다음 N줄에 걸쳐서 백준이가 외치는 정수가 차례대로 주어진다. 정수는 -1 www.acmicpc.net 문제 해석 Boj(백준이)가 정수를 하나씩 외칠 때마다 Brother(동생)이 지금까지 말한 수 중에서 중간값을 말해야 한다. 만약 Boj가 외친 수의 개수가 짝수개라면 중간에 있는 두 수 중 작은 수를 말한다. 입력 첫째 줄에는 백준이가 외치는 정수의 개수 N 그다음 N 줄에 걸쳐 백준이가 외치는 정수가 차례대로 주어진다. 제약조건 1
-
[Java] 스트림(Stream)이란? + 특징, 등장배경Java 2022. 1. 29. 00:01
스트림(Stream)이란? Stream이란 시냇물이라는 뜻으로 물이 흘러가듯이 데이터 소스가 가진 데이터가 흘러감을 의미합니다. 다양한 데이터 소스(컬렉션, 배열)를 표준화(통일)된 방법으로 다루기 위한 것입니다. 공식문서에서는 아래와 같이 소개하고 있습니다. Classes to support functional-style operations on streams of elements, such as map-reduce transformations on collections. 컬렉션의 맵리듀스 변환과 같은 스트림의 요소에 대하여 함수형 스타일의 연산을 지원하는 클래스입니다. 맵리듀스(map-reduce)란? 대용량 데이터 처리를 분산 병렬 컴퓨팅에서 처리하기 위한 목적으로 제작된 프레임워크 스트림의 등장배..
-
클린 코드 - 객체와 자료 구조클린 코드(Clean Code) 2022. 1. 28. 00:01
보통 클래스의 멤버 변수를 private(비공개)로 정의하는 이유는 남들이 변수에 의존하지 않게 만들며 변수를 감추고 싶어서입니다. 그렇다면 과연 getters와 setters 함수를 당연하게 public(공개)하여 비공개 변수를 외부에 노출하는 게 좋을까요? 아래에 바로 답변이 있습니다. 1. 자료 추상화 변수 사이에서 함수라는 계층을 넣는다고 구현이 감춰지지않습니다. 구현을 감추기 위해서는 추상화가 필요합니다. 그저 인터페이스나 getters와 setters 함수로 변수를 다룬다고 클래스 및 추상화가 되지 않습니다. 사용자가 구현을 모른 채 자료의 핵심을 조작할 수 있어야 진정한 의미의 클래스입니다. 개발자는 추상화를 표현하기 위해 고민해야 하며, 아무 생각 없이 getters/setters 함수를 ..
-
[Java] 싱글톤(Singleton)이란?Java 2022. 1. 27. 00:01
싱글톤(Singleton)이란? 전역 변수를 사용하지 않고 애플리케이션이 시작될 때 최초 한 번만 메모리에 할당되어 객체를 하나만 생성하도록 하며, 생성된 객체를 어디에서든지 참조할 수 있도록 하는 패턴 즉, 싱글톤 패턴은 단 하나의 인스턴스를 생성해 사용하는 디자인 패턴입니다. Single이라는 단어 자체가 한 개/단일을 의미하기 때문에 "싱글톤"이라는 단어 자체로 어느 정도 객체를 하나만 생성한다고 유추할 수도 있습니다. 싱글톤을 사용하는 이유? 고정된 메모리 영역을 얻으면서 한 번의 new로 인스턴스를 사용하기 때문에 메모리 낭비를 방지할 수 있습니다. 전역으로 사용되는 인스턴스이기 때문에 다른 클래스의 인스턴스들이 접근하여 사용할 수 있습니다. 즉, 데이터 공유가 쉽다는 것입니다. 하지만 여러 클..