본문 바로가기

전체 글

(461)
람다 람다(lambda) 람다와 클로저 람다는 익명 함수의 다른 표현이다. 즉, 함수는 함수인데 이름이 없는 경우를 의미한다. Collection의 모든 값을 출력 // nextstep.fp.Lambda의 printAllOld method List numbers = Arrays.asList(1, 2, 3, 4, 5, 6); for (int number : numbers) { System.out.println(number); } 람다가 없던 시절 List numbers = Arrays.asList(1, 2, 3, 4, 5, 6); numbers.forEach(new Consumer() { public void accept(Integer value) { System.out.println(value); } }); ..
[JAVA] 백준 2225번: 합 분해 (초급 1-22) 문제 0부터 N까지의 정수 K개를 더해서 그 합이 N이 되는 경우의 수를 구하는 프로그램을 작성하시오. 덧셈의 순서가 바뀐 경우는 다른 경우로 센다(1+2와 2+1은 서로 다른 경우). 또한 한 개의 수를 여러 번 쓸 수도 있다. 입력 첫째 줄에 두 정수 N(1 ≤ N ≤ 200), K(1 ≤ K ≤ 200)가 주어진다. 출력 첫째 줄에 답을 1,000,000,000으로 나눈 나머지를 출력한다. import java.util.Arrays; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int num = sc.nextInt(); in..
[JAVA] 백준 1699번: 제곱수의 합 (초급 1-21) 문제 어떤 자연수 N은 그보다 작거나 같은 제곱수들의 합으로 나타낼 수 있다. 예를 들어 11=32+12+12(3개 항)이다. 이런 표현방법은 여러 가지가 될 수 있는데, 11의 경우 11=22+22+12+12+12(5개 항)도 가능하다. 이 경우, 수학자 숌크라테스는 “11은 3개 항의 제곱수 합으로 표현할 수 있다.”라고 말한다. 또한 11은 그보다 적은 항의 제곱수 합으로 표현할 수 없으므로, 11을 그 합으로써 표현할 수 있는 제곱수 항의 최소 개수는 3이다. 주어진 자연수 N을 이렇게 제곱수들의 합으로 표현할 때에 그 항의 최소개수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 자연수 N이 주어진다. (1 ≤ N ≤ 100,000) 출력 주어진 자연수를 제곱수의 합으로 나타낼 때에 그 제곱수 ..
[JAVA] 백준 1912번: 연속합 (초급 1-20) 문제 n개의 정수로 이루어진 임의의 수열이 주어진다. 우리는 이 중 연속된 몇 개의 수를 선택해서 구할 수 있는 합 중 가장 큰 합을 구하려고 한다. 단, 수는 한 개 이상 선택해야 한다. 예를 들어서 10, -4, 3, 1, 5, 6, -35, 12, 21, -1 이라는 수열이 주어졌다고 하자. 여기서 정답은 12+21인 33이 정답이 된다. 입력 첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다 크거나 같고, 1,000보다 작거나 같은 정수이다. 출력 첫째 줄에 답을 출력한다. import java.util.Scanner; public class baekjoon1912_2 { public static void mai..
[JAVA] 백준 14002번: 가장 긴 증가하는 부분 수열 4 (초급 1-19) 문제 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이고, 길이는 4이다. 입력 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ Ai ≤ 1,000) 출력 첫째 줄에 수열 A의 가장 긴 증가하는 부분 수열의 길이를 출력한다. 둘째 줄에는 가장 긴 증가하는 부분 수열을 출력한다. 그러한 수열이 여러가지인 경우 아무거나 출력한다. import java.util.ArrayList; import java.util.Arrays; ..
tdd 강의 좋은 교육이란 어떤 교육일까? 교육 효과가 높은 교육은 어떤 교육일까? 교육 과정에서 그치지 않고 교육을 받는 교육생이 행동하도록 함으로써 실질적인 변화를 만드는 교육. 개인에서 한발 더 나아가 팀, 회사에 변화를 만드는 교육 - 교육에 대한 포비의 철학 교육에서 그치지 않고, 현장에서 적용을 해야한다. 나의 영향력 범위 내에서 변화를 만들 수 있는 최소한의 변화를 만든다. - 코드 컨벤션, 커밋 로그 컨벤션을 적용 - 유틸성 클래스에 학습 테스트 적용하고 리팩토링하기 - else문 쓰지 않기(early return), indent depth를 줄이는 리팩토링(메서드 추출 리팩토링) 자신감과 용기가 쌓이면 더 큰 변화를 만든다. - 문자열과 원시값 포장, 일급 콜렉션 적용 리팩토링 (클래스 분리 리팩토링..
[JAVA] 백준 11053번: 가장 긴 증가하는 부분 수열 (초급 1-18) 가장 긴 증가하는 부분 수열 시간 제한메모리 제한제출정답맞은 사람정답 비율 1 초 256 MB 79791 30932 20334 36.962% 문제 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이고, 길이는 4이다. 입력 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ Ai ≤ 1,000) 출력 첫째 줄에 수열 A의 가장 긴 증가하는 부분 수열의 길이를 출력한다. 문제 풀이 현재 값 보다 앞에 있는 수 중에 현재 값보다 ..
[JAVA] 백준 2193번: 이친수 (초급 1-17) 문제 0과 1로만 이루어진 수를 이진수라 한다. 이러한 이진수 중 특별한 성질을 갖는 것들이 있는데, 이들을 이친수(pinary number)라 한다. 이친수는 다음의 성질을 만족한다. 이친수는 0으로 시작하지 않는다. 이친수에서는 1이 두 번 연속으로 나타나지 않는다. 즉, 11을 부분 문자열로 갖지 않는다. 예를 들면 1, 10, 100, 101, 1000, 1001 등이 이친수가 된다. 하지만 0010101이나 101101은 각각 1, 2번 규칙에 위배되므로 이친수가 아니다. N(1 ≤ N ≤ 90)이 주어졌을 때, N자리 이친수의 개수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N이 주어진다. 출력 첫째 줄에 N자리 이친수의 개수를 출력한다. 점화식 3자리의 수 중 0으로 끝나는 수 (100..