뭔가 검색하다 이런 것들을 봐 버렸다. 굉장해..... https://knowyourmeme.com/photos/1173139 Programming languages Gijinka | Gijinka / Moe Anthropomorphism See more 'Gijinka / Moe Anthropomorphism' images on Know Your Meme! knowyourmeme.com https://sentencedtoship.tumblr.com/post/147401402096 sentencedtoship PROGRAMMING LANGUAGES GIJINKAS PART 2: Objective-C: Smol pure innocence, owns more than 10 Apple products, bul..
스트림의 중간 연산 중 하나인 concat()은 Concatenate(잇다, 연쇄시키다)에서 왔다. 단어 그대로 특정 스트림을 다른 스트림 뒤에 붙이는 연산을 하는데, 사용 방법도 굉장히 간단하다. 먼저 두 개의 스트림을 이어 붙이는 경우 아래와 같이 구현하면 된다. public class PracticeConcat { public static void main(String[] args) { List list1 = Arrays.asList(2, 3, 5, 7, 11); List list2 = Arrays.asList(13, 17, 19, 23, 29); Stream.concat(list1.stream(), list2.stream()) .forEach(System.out::println); } } 두 개의..
빌더 패턴(Builder Pattern)은 다양한 조건의 객체를 손쉽게 만들어내기 위한 디자인 패턴, 그중에서도 생성 패턴이다. 디자인 패턴이라 함은 쉽게 말해 재사용 가능한 일종의 솔루션이라는 뜻이며, 생성 패턴은 객체 생성 절차를 추상화하는 패턴이라는 뜻이다. 구체적으로 빌더 패턴은 생성자를 거치지 않고 빌더라는 내부 클래스를 통해 간접적으로 인스턴스를 생성하는 방식이다. 위키백과에는 이를 생성 과정과 표현 방법을 분리하는 패턴이라고 표현하고 있기도 하다. 이는 특히 대상 클래스가 복잡해지고 요구사항이 늘어날수록 빛을 발하게 되는데, 그 이유는 아래와 같다. 대상 클래스의 생성자를 private으로 묶고 간접적으로 인스턴스를 생성 → 결합도를 낮춰 수정 및 유지보수가 편해짐 뛰어나고 직관적인 가독성으..
이전에 자료구조에 대한 글을 올리면서 트리에 대해 다룬 적이 있다. 2022.07.26 - [Development/Java] - [Java]자료구조 - Tree [Java]자료구조 - Tree Tree 자료구조 Tree(트리)는 주로 계층적인 구조를 표현하기 위해 사용한다. /Users/username 토너먼트 경기의 대진표 조직도 트리구조는 루트(Root)라는 최상위 노드에서 시작해 각 데이터를 간선(Edge, gnidinger.tistory.com 그리고 최근 우선순위 큐에 대해 다루면서 내부적으로 O(log N)의 힙(Heap)을 사용한다고 언급했었는데, 2022.09.23 - [Development/Java] - [Java]우선순위 큐(Priority Queue) 튜토리얼 [Java]우선순위 큐(..
이전에 자료구조에 대해 얕게 공부하면서 큐(Queue)에 대한 글을 올린 적이 있다. 2022.07.25 - [Development/Java] - [Java]자료구조 - Queue [Java]자료구조 - Queue Queue는 (대기)줄이라는 의미를 가지고 있다. 위 그림에서 보는 것처럼 데이터의 입력과 출력 방향이 따로 정해져 있으며, 먼저 들어간 데이터가 먼저 나오는 선입 선출(FIFO - First In First Out) 구조 gnidinger.tistory.com 먼저 큐에 대해 복습하자. 큐는 대기줄이라는 의미를 가지고 있다. 위 그림처럼 데이터의 입력과 출력 방향이 따로 정해져 있으며, 먼저 들어간 데이터가 먼저 나오는 선입선출(FIFO - First In First Out) 구조로 이루어져..
instanceof 연산자는 참조 변수의 타입 변환(캐스팅)이 가능한지 여부를 boolean 타입으로 알려주는 역할을 한다. 좀 더 직관적으로 받아들이기 위해 우선 사용법을 살펴보자. 문법은 아래와 같다. A instanceof B 이때 instanceof 연산자는 A = B 이거나 A가 B를 상속받는 클래스인지를 boolean으로 알려준다고 할 수 있다. 그림으로 나타내면 대략 아래와 같다. 인터페이스의 경우에는 extends를 implements로 교체하면 동일한 로직을 적용할 수 있다. 예를 들어 AbstractSet 클래스를 상속받은 HashSet 객체의 경우 아래와 같은 결과를 얻을 수 있다. HashSet set = new HashSet(); System.out.println(set insta..
Optional 클래스는 자바 8부터 지원하는 래핑(Wrapping) 혹은 컨테이너(Container) 객체이다. 주로 NPE(Null Pointer Exception) 방지를 위해 사용되며, null이 올 수 있는 값을 감싸는 방법으로 기능한다. 또한 Integer나 Double과 같이 제네릭 타입()을 포장하기 때문에 모든 타입의 참조 변수를 저장할 수 있다. NPE(Null Pointer Exception) Exception in thread "main" java.lang.NullPointerException NPE는 개발 중 가장 많이 발생하는 런타임 예외 중 하나로, 값이 없는(null) 대상을 호출할 때 발생하는 예외이다. null의 의미가 모호해 디버깅이나 문제 파악이 어려우며, 예방을 위한..
indexOf(), lastIndexOf()는 String이나 문자열 배열에서 특정 값의 인덱스를 찾는 메서드이다. 문자열로 된 변수나 배열만 가능한 이유는 java.lang.String 클래스에 속한 메서드기 때문이다. 정확하게는 문자열 배열이 아닌 List로 변환을 해서 사용해야 한다. 정수형으로 사용하고자 한다면 구아바 등의 라이브러리를 쓰는 것도 방법이 될 수 있겠다. 어쨌거나 둘의 차이는 간단하다. indexOf() - 배열(문자열)의 왼쪽부터 탐색, 처음 등장하는 인덱스 반환 lastIndexOf() - 배열(문자열)의 오른쪽부터 탐색, 처음 등장하는 인덱스 반환 사용 예제를 확인하자. import java.util.Arrays; public class Main { public static v..
멱집합은 주어진 집합의 모든 부분집합들로 이루어진 집합이다. 예를 들어 A = {1, 2}라고 하면 A의 부분집합은 ∅(공집합), {1}, {2}, {1, 2}의 네 개다. 이때 A의 멱집합은 {∅, {1}, {2}, {1, 2}}가 된다. n개의 원소를 가진 집합의 부분집합은 2^n 개이므로, 멱집합의 원소의 개수도 2^n개가 된다. 자바에서 멱집합을 구현할 때는 Stack과 재귀 함수를 이용하면 간단하게 작성할 수 있다. import java.util.Stack; public class PowerSet2 { public static void main(String[] args) { char[] characters = {'a', 'b', 'c'}; // 멱집합을 구할 집합 Stack stack = new..
유클리드 호제법은 두 양의 정수, 혹은 다항식의 최대공약수를 구하는 알고리즘이다. 기원전 300년에 그리스의 수학자 유클리드에 의해 기술된 이 알고리즘은 인류 최초의 알고리즘이라는 호칭도 가지고 있다. 그 내용은 다음과 같다. 유클리드 호제법 두 양의 정수 a, b(a > b)에 대하여 a = bq + r (0 ≤ r < b)이라 하면, a, b의 최대공약수는 b, r의 최대공약수와 같다. 즉, gcd(a, b) = gcd(b, r)이다. 이때 r = 0이라면, a, b의 최대공약수는 b가 된다. 쉽게 말하면 큰 숫자를 작은 숫자로 나누고, 그 나머지로 작은 숫자를 나누는 계산을 나머지가 0이 될 때까지 반복하는 것이다. 예를 들어 1096과 411의 최대공약수를 구한다고 해보자. 첫 계산은 다음과 같다..
- Total
- Today
- Yesterday
- java
- 유럽
- spring
- 면접 준비
- a6000
- Algorithm
- RX100M5
- Python
- 백준
- 리스트
- 칼이사
- 자바
- 여행
- BOJ
- 동적계획법
- Backjoon
- 알고리즘
- 스프링
- 남미
- 야경
- 세계일주
- 맛집
- 기술면접
- 파이썬
- 세계여행
- 세모
- 유럽여행
- 중남미
- 스트림
- 지지
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |