씨앗뿌리는 개발자의 개발노트
Java의 Matcher를 활용한 정규식 검색 및 추출
java 2023. 3. 6. 17:27

Java에서는 정규식 패턴 확인 및 추출을 위해 Matcher class의 find()나 matches() 메소드를 사용하게 된다. find() 메소드 Matcher.find()는 하나의 문자열에서 여러 개의 정규식 패턴에 해당하는 문자열들을 찾을 때 사용한다. find()를 호출할 때 마다 다음 문자열이 있으면 true를 반환하고 더 이상 없을 때는 false가 반환된다. find()가 true일때는 start(), group(), end()메소드를 호출할 수 있다. start()는 해당 문자열의 시작 위치, end()는 끝 위치를 반환한다. gruop()은 해당 문자열 자체를 반환한다. Pattern stringPattern = Pattern.compile("[a-zA-Z]+"); Matcher m ..

article thumbnail
Java Gradle Project에서 Unit Test코드 작성하기
java 2023. 3. 6. 10:10

Test 코드 작성하기 먼저 다음과 같이 간단한 클래스를 만든다. public class Calculator { public int plus(int x, int y) { return x + y; } } Intellij에서는 클래스 이름(Calculator)에서 Code Generate를 실행하면 Test코드를 작성할 수 있다. 이때 Destination package는 소스 코드와 동일하게 지정해야 추후 관리하기 쉽다. 테스트 이름 명명법 given, when, then 으로 이름을 구성한다. 그러면 해당 테스트에 대한 입력, 실행, 출력을 쉽게 파악할 수 있다. 그리고 테스트 코드도 given, when, then의 영역으로 나누어 구성한다. given에서는 입력 데이터, 객체들, 목(mock)을 준비..

Java Stream API
java 2023. 3. 4. 11:39

개요 Java8에서 도입된 Stream API에 대해 알아보자. Stream API는 lambda식, Optional등과 함께 반드시 알아야 할 Java8의 기능이다. Stream생성 Stream을 만드는 방법은 다양하다. 한 가지 중요한 특징은 stream을 만들어서 연산을 적용하더라도 원본 데이터는 변하지 않는다는 점이다. 따라서 하나의 원본 데이터에서 여러 개의 stream을 만들어서 사용해도 무방하다. 빈 Stream 생성 Stream emtpyStream = Stream.empty(); Collection으로부터 생성 List나 Set과 같은 Collection으로부터 Stream을 만들 수 있다. Collection list = Arrays.asList("s1", "s2", "s3"); Str..

알고리즘 동적계획법 문제 - 계단오르기
알고리즘 2021. 10. 14. 09:05

문제 N개의 계단이 있고 각 계단 위에는 임의의 정수가 적혀있다. 철수는 첫 번째 계단에서 마지막 계단까지 올라가려 하는데 한 번에 오를 수 있는 계단수는 1개 또는 2개이다. 계단을 오르는 비용이 (현재 계단에 적혀있는 정수) - (옮겨갈 계단에 적혀있는 정수)의 절대값이라고 할 때 최소 비용을 구하시오. 풀이 일단 각 계단에 적힌 정수를 h(i)라고 하자. 그러면 첫 번째 위치 h(1)에서 한 계단을 오르는 비용은 |h(1) - h(2)| 이고 두 계단을 오르는 비용은 |h(1) - h(3)| 이 된다. 제일 먼저 떠오르는 순진한 방법은 greedy하게 각 계단에서 비용이 적은 층으로 옮겨가는 것이다. 즉, 단순히 각 계단에서 한 계단 오르는 비용과 두 계단 오르는 비용 중에서 적은 방법을 선택해서 ..