목차 지난 글에서 리액티브 시스템이란 쉽게 말해 반응 속도가 빠른 프로그램을 설계하는 원칙이며 리액티브 프로그래밍은 그 원칙을 구현하는 논 블로킹, 비동기 방식의 선언형 개발 패러다임이라 했었다. 2022.10.12 - [Development/Spring] - [Spring]리액티브 프로그래밍(Reactive Programming) [Spring]리액티브 프로그래밍(Reactive Programming) 리액티브 프로그래밍(Reactive Programming)이란 논 블로킹, 비동기 데이터 흐름 및 새로운 정보의 가용성에 기반을 둔 선언형 개발 패러다임이다. 또는 리액티브 시스템을 구현하는 방법이자 하위 개 gnidinger.tistory.com 이번 글에선 리액티브 프로그래밍의 표준 사양인 리액티브 ..
목차 리액티브 프로그래밍(Reactive Programming)이란 논 블로킹, 비동기 데이터 흐름 및 새로운 정보의 가용성에 기반을 둔 선언형 개발 패러다임이다. 또는 리액티브 시스템을 구현하는 방법이자 하위 개념이라고 볼 수도 있다. 정의에 사용된 단어에 대한 뜻은 잠시 후에 알아보기로 하고, 우선 리액티브 시스템이 무엇인지 정리하고 가자. Reactive System 리액티브 시스템이란 '반응이 좋은, 민감한' 시스템이란 뜻이다. 이렇게 말해선 잘 와닿지 않을 수도 있으니, 조금 더 직관적으로 말하자면 리액티브란 한 마디로 입력이 발생했을 때 최대한 빠른 시간에 응답하도록 하는 설계 원칙이라고 할 수 있다. 이는 웹 앱에서 굉장히 중요한 원칙인데, 고객들이 대체로 느린 반응속도를 기다려주지 않기 때..
문제 위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌을 때, 벌집의 중앙 1에서 N번 방까지 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나가는지(시작과 끝을 포함하여)를 계산하는 프로그램을 작성하시오. 예를 들면, 13까지는 3개, 58까지는 5개를 지난다. 입력 첫째 줄에 N(1 ≤ N ≤ 1,000,000,000)이 주어진다. 출력 입력으로 주어진 방까지 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나는지 출력한다. 풀이 지나는 방의 개수를 구하기 위해 해당 껍질의 최댓값을 나열하면 1, 7, 19, 37.. 순으로 증가한다. 즉 첫 항이 1이고 계차..
자꾸 까먹어서 쓸 때마다 검색하는 나 자신이 초라해서 정리한다. 자바엔 세 가지 출력 메서드가 존재한다. print() - 출력 println() - 출력 후 줄바꿈 printf() - 형식(Format)이 있는 출력 그중에서 잘 외워지지 않지만 간간히 써먹는 printf()에 대해 알아보자. 먼저 사용 문법은 아래와 같다. System.out.printf(format, arguments) 괄호의 첫 번째 칸에 형식을, 두 번째 칸 이후에 출력할 변수를 넣으면 되는데, 예를 들면 아래와 같이 쓰인다. public class PrintfExample { public static void main(String[] args) { String str = "Gnidinger"; int n = 3000; Syst..
각종 알고리즘 문제를 풀거나, 입력 값으로 데이터를 받을 때 의도했건 그렇지 않건 문자열 앞 뒤로 공백이 생기고, 생긴 공백을 제거해야 할 때가 있다. trim()은 그때 사용하는 메서드이고, strip()은 자바 11부터 지원하기 시작한 비슷한 메서드이다. 둘의 공통점과 차이점을 간단하게 알아보자. 공통점 public class TrimStripExample { public static void main(String[] args) { String str = " Hello Gnidinger! "; System.out.printf("원본 문자열: '%s'%n", str); System.out.printf("문자열.trim(): '%s'%n", str.trim()); System.out.printf("문자열..
소수(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) {..
자바의 기본 자료형인 int와 long은 아래와 같은 범위의 수를 저장할 수 있다. Type Range int -2,147,483,648 ~ 2,147,483,647 (약 21억) long -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 (약 900경) long 타입으로도 충분히 큰 수를 저장할 수 있지만, 가끔 알고리즘 문제에서 이 범위를 넘는 수의 연산이 필요해질 때가 있다. 그럴 때 사용하는 것이 범위의 제한이 없는 자료형, BigInteger다. 추가로 BigInteger는 java.math 패키지에 소속되어 있으며, 사용 시 아래와 같이 import 해주어야 한다. import java.math.BigInteger; 선언 BigInteger 자료..
이중 반복문으로 출력할 수 있는 가장 간단한 일 중 하나가 바로 구구단이다. 스트림을 이래저래 가지고 놀다 보니까 이중 반복문도 돌아보고 싶어 졌는데, 연습하는 김에 구구단을 출력해 본다. 이중 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
- 맛집
- 파이썬
- 백준
- 세계일주
- 세모
- Algorithm
- RX100M5
- 유럽여행
- 알고리즘
- Backjoon
- 리스트
- 동적계획법
- spring
- 야경
- BOJ
- 스트림
- 스프링
- 여행
- 세계여행
- 자바
- 남미
- Python
- 면접 준비
- 중남미
- 지지
- 기술면접
- 칼이사
- java
- 유럽
- a6000
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |