본문 바로가기

자바

(73)
11 합성과 유연한 설계 10장은 상속에 대해 이야기를 하였다면 11장에서는 합성에 대해 이야기를 하였습니다. 그리고 10장에서 이야기한 상속과 마찬가지로 합성을 잘 쓰고 있는 저에게 있어 생각하지 못하고 있던 장단점들에 대해 이야기를 하고 있었습니다. 그러면서 부가적으로 일급 컬렉션에 대해 떠올릴 수 있었습니다. 합성은 전체를 표현하는 객체가 부분을 표현하는 객체를 포함해서 부분 객체의 코드를 재사용한다. ... 합성에서 두 객체 사이의 의존성은 런타임에 해결된다. ... 합성은 내부에 포함되는 객체의 구현이 아닌 퍼블릭 인터페이스에 의존한다. 따라서 합성을 이용하면 포함된 객체의 내부 구현이 변경되더라도 영향을 최소화할 수 있기 때문에 변경에 더 안정적인 코드를 얻을 수 있게 된다. ... [코드 재사용을 위해서는] 객체 합..
자바8 Stream https://futurecreator.github.io/2018/08/26/java-8-streams/, https://ahndding.tistory.com/23를 참고하였습니다. 무엇을 배웠나요? 자바8에서 추가한 스트림(Streams)는 람다를 활용할 수 있는 기술 중 하나 스트림은 “데이터의 흐름” 배열 또는 컬렉션 인스턴스에 함수 여러 개를 조합해서 원하는 결과를 필터링 하고 가공된 결과를 얻을 수 있다. Stream의 구조는 크게 세 가지로 볼 수 있다. Stream 생성 중개 연산 최종 연산 중개 연산은 연산결과를 Stream형태로 반환하기 때문에 연속적으로 연결해서 사용할 수 있다. **데이터소스객체집합.Stream생성.중개연산().최종연산()**이다.
자바8 람다 https://soft.plusblog.co.kr/88를 참고 하였습니다. 무엇을 배웠나요? 자바8의 람다은 메서드를 하나의 식으로 표현한 것 람다식 문법 이때 파라미터가 하나라면 생략이 가능하다 람다가 하나의 식으로 구성되어 있으면 중괄호를 생략가능하다. 만약 람다의 바디에 return 이 있으면 중괄호를 생략하지 못한다. (파라미터 목록) → {람다식 바디}
자바 Optional 문법 https://mangkyu.tistory.com/70를 참고하였습니다. 무엇을 배웠나요? 자바 8에서부터 Optional클래스를 이용해 NPE를 방지할수 있도록 도와준다. Optional는 null이 올 수 있는 값을 감싸는 Wrapper 클래스이다. Optional 클래스는 각종 메서드들을 통해 값이 null이더라도 바로 NPE가 발생하지 않게 해준다. Optional 생성하기 Optional.empty() - 값이 Null인 경우 Optional.of() - 값이 Null이 아닌 경우 Optional.ofNullable() - 값이 Null일수도, 아닐수도 있는 경우 Optional은 null 또는 값을 감싸서 NPE(NullPointerException)로부터 부담을 줄이기 위해 등장한 Wrapp..
백준 17128 소가 정보섬에 올라온 이유(JAVA) 문제 https://www.acmicpc.net/problem/17128 17128번: 소가 정보섬에 올라온 이유 첫째 줄에 소의 수를 나타내는 N과 욱제가 장난칠 횟수 Q가 주어진다. (4 ≤ N ≤ 200,000, 1 ≤ Q ≤ 200,000) 둘째 줄에 N마리 소들의 품질 점수 Ai가 순서대로 주어진다. (1 ≤ |Ai| ≤ 10) 셋째 줄에 www.acmicpc.net 코드 package com.company; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static v..
백준 10703 유성(JAVA) 문제 https://www.acmicpc.net/problem/10703 10703번: 유성 작고 특이한 모양의 유성 사진이 인터넷에 올라왔다. 사진에는 매우 높은 곳에서 떨어지고 있는 유성이 허공에 찍혀 있었다. 유성이 떨어지고 난 뒤의 사진도 있었지만 안타깝게도 소실돼버려 www.acmicpc.net 코드 package com.company; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; class Main { static int R, S; static char pic[][]; public static void main(S..
백준 5766 할아버지는 유명해!(JAVA) 문제 https://www.acmicpc.net/problem/5766 5766번: 할아버지는 유명해! 각 테스트 케이스마다, 당신의 프로그램은 한 행에 2등인 선수(들)의 번호를 출력해야 합니다. 2등인 선수가 두 명 이상인 경우(동점자 발생), 각 선수 번호를 공백으로 구분하여 오름차순으로 www.acmicpc.net 코드 package com.company; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Collections; import java.util.StringTokenizer; public class Main { public static vo..
백준 2729 이진수 덧셈(JAVA) 문제 https://www.acmicpc.net/problem/2729 2729번: 이진수 덧셈 이진수 덧셈은 매우 간단하고, 십진수 덧셈과 비슷하게 하면 된다. 십진수 덧셈을 할 때는, 오른쪽부터 왼쪽으로 차례대로 숫자 하나씩 더하면 된다. 이진수 덧셈도 이와 비슷하게 하면 된다. 십 www.acmicpc.net 코드 package com.company; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.math.BigInteger; import java.util.StringTokenizer; import static java.lang.Integer.*; public..
백준 18311 왕복 (JAVA) https://www.acmicpc.net/problem/18311 18311번: 왕복 첫째 줄에 정수 N, K가 공백을 기준으로 구분되어 주어진다. (1≤N≤100,000) 단, K는 항상 왕복 거리보다 작은 양의 정수 혹은 0으로 주어진다. 둘째 줄에 1번부터 N번까지 각 코스의 길이가 공백을 www.acmicpc.net 코드 import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Scanner; import java.util.StringTokenizer; class Main { public static void main(String[] args) throws Exception { int[] course; in..
백준 1316 그룹 단어 체커 (JAVA) 문제 https://www.acmicpc.net/problem/1316 1316번: 그룹 단어 체커 그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때 www.acmicpc.net 코드 package com.company; import java.io.*; import java.util.*; public class Main{ public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(..