문제 주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오. 입력 첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다. 출력 주어진 수들 중 소수의 개수를 출력한다. 풀이 입력 값으로 리스트를 생성한 다음 스트림을 이중으로 사용해서 소수를 판별했다. 소수 판별법에 따라 연산 속도를 위해 1부터 √a 까지만 순회하도록 했다. import java.util.ArrayList; import java.util.List; import java.util.Scanner; import java.util.stream.IntStream; public class Prob1978Stream { public static void m..
summarizingInt()는 Collectors와 함께 사용 돼 정수형 스트림에서 제목의 계산을 한번에 해주는 연산자이다. 물론 그중 원하는 요소를 뽑아오는 것도 얼마든지 가능한 아주 기특한 아이이다. 코드를 보자. import java.util.IntSummaryStatistics; import java.util.List; import java.util.stream.Collectors; public class SummarizingExample { public static void main(String[] args) { List list = List.of(2, 3, 5, 7, 11, 13, 17, 19); IntSummaryStatistics statistics = list.stream() .coll..
지난 글에서 리액티브 프로그래밍과 리액티브 스트림즈, 그 구현체인 프로젝트 리액터에 대해 알아보았다. 2022.10.12 - [Development/Spring] - [Spring]리액티브 프로그래밍(Reactive Programming) 2022.10.12 - [Development/Spring] - [Spring]리액티브 스트림즈(Reactive Streams) [Spring]리액티브 스트림즈(Reactive Streams) 지난 글에서 리액티브 시스템이란 쉽게 말해 반응 속도가 빠른 프로그램을 설계하는 원칙이며 리액티브 프로그래밍은 그 원칙을 구현하는 논 블로킹, 비동기 방식의 선언형 개발 패러다임이라 gnidinger.tistory.com 짧게 요약하면 아래와 같은 내용이다. 리액티브 프로그래밍 ..
문제 무한히 큰 배열에 다음과 같이 분수들이 적혀있다. 1/1 1/2 1/3 1/4 1/5 … 2/1 2/2 2/3 2/4 … … 3/1 3/2 3/3 … … … 4/1 4/2 … … … … 5/1 … … … … … … … … … … … 이와 같이 나열된 분수들을 1/1 → 1/2 → 2/1 → 3/1 → 2/2 → … 와 같은 지그재그 순서로 차례대로 1번, 2번, 3번, 4번, 5번, … 분수라고 하자. X가 주어졌을 때, X번째 분수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다. 출력 첫째 줄에 분수를 출력한다. 풀이 수열을 조금 더 늘어놓고 규칙 및 풀이 방법을 찾아보자. $$\frac{1}{1}, \frac{1}{2}, \frac{2}{1},..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/vsqa7/btrOqh0ujzk/xgbwIgQMDi5k8hhknoi4Lk/img.png)
목차 리액티브 프로그래밍(Reactive Programming)이란 논 블로킹, 비동기 데이터 흐름 및 새로운 정보의 가용성에 기반을 둔 선언형 개발 패러다임이다. 또는 리액티브 시스템을 구현하는 방법이자 하위 개념이라고 볼 수도 있다. 정의에 사용된 단어에 대한 뜻은 잠시 후에 알아보기로 하고, 우선 리액티브 시스템이 무엇인지 정리하고 가자. Reactive System 리액티브 시스템이란 '반응이 좋은, 민감한' 시스템이란 뜻이다. 이렇게 말해선 잘 와닿지 않을 수도 있으니, 조금 더 직관적으로 말하자면 리액티브란 한 마디로 입력이 발생했을 때 최대한 빠른 시간에 응답하도록 하는 설계 원칙이라고 할 수 있다. 이는 웹 앱에서 굉장히 중요한 원칙인데, 고객들이 대체로 느린 반응속도를 기다려주지 않기 때..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/AmXr3/btrOlW3pMzQ/cz38wnUascgwUgGBEoaBI1/img.png)
문제 위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌을 때, 벌집의 중앙 1에서 N번 방까지 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나가는지(시작과 끝을 포함하여)를 계산하는 프로그램을 작성하시오. 예를 들면, 13까지는 3개, 58까지는 5개를 지난다. 입력 첫째 줄에 N(1 ≤ N ≤ 1,000,000,000)이 주어진다. 출력 입력으로 주어진 방까지 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나는지 출력한다. 풀이 지나는 방의 개수를 구하기 위해 해당 껍질의 최댓값을 나열하면 1, 7, 19, 37.. 순으로 증가한다. 즉 첫 항이 1이고 계차..
소수(Prime Number)는 1과 자기 자신으로밖에 나누어 떨어지지 않는 1 이외의 정수를 말한다. 지난 글에 올렸던 스트림으로 도는 이중 반복문을 소수 찾기에 응용해 보았다. 임의의 정수 m과 n사이의 소수를 전부 출력하는 코드이며, 단순이 2부터 자기 자신의 제곱근까지 전부 나누어보는 방법을 취한다. 조금 더 정확하게는 두 가지의 필터링을 사용하는데, 1보다 큰 수일 것 2부터 자기 자신의 제곱근(의 반올림)까지 나누어 떨어지지 않을 것 이다. 코드를 보자. import java.util.Scanner; import java.util.stream.IntStream; public class SearchPrimeNumbers { public static void main(String[] args) {..
이중 반복문으로 출력할 수 있는 가장 간단한 일 중 하나가 바로 구구단이다. 스트림을 이래저래 가지고 놀다 보니까 이중 반복문도 돌아보고 싶어 졌는데, 연습하는 김에 구구단을 출력해 본다. 이중 for문으로 구구단 출력 특별한 설명은 필요 없을 것 같아서 바로 코드로 간다. import java.util.ArrayList; import java.util.List; public class MultiplicationTable { public static void main(String[] args) { for(int i = 2; i < 10; i++) { List list = new ArrayList(); for (int j = 1; j < 10; j++) { list.add(i * j); } System.o..
문제 N개의 숫자가 공백 없이 쓰여있다. 이 숫자를 모두 합해서 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다. 출력 입력으로 주어진 숫자 N개의 합을 출력한다. 풀이 큰 수를 입력받기 위해서 문자열로 받아 스트림으로 자른 뒤 변환했다. 추가로 이 풀이에는 입력에서 주어지는 숫자의 개수가 필요 없다(입력 받기만 하고 사용하지 않는다). import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Scanner; public class Prob11720Stream { public static void mai..
List → Array List → String[] 문자열 리스트를 문자열 배열로 바꾸는 건 굉장히 간단하다. import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class Example { public static void main(String[] args) { List list = new ArrayList(); list.add("101"); list.add("103"); list.add("107"); String[] arr = list.toArray(new String[list.size()]); System.out.println(Arrays.toString(arr) + ", " + arr.getClass(..
- Total
- Today
- Yesterday
- 리스트
- Backjoon
- 동적계획법
- spring
- 지지
- 스트림
- 자바
- 알고리즘
- 중남미
- 파이썬
- 백준
- 면접 준비
- 세모
- 기술면접
- 야경
- 여행
- 맛집
- RX100M5
- java
- 유럽
- 스프링
- 남미
- a6000
- Python
- BOJ
- 세계여행
- 칼이사
- 유럽여행
- Algorithm
- 세계일주
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |