반응형
```
백준 24510번 시간 복잡도를 배운 도도 JAVA 구현해보기
```
이번 글을 통해 배워갈 내용
- 백준 24510번 풀이
https://www.acmicpc.net/problem/24510
백준 24510번 시간복잡도를 배운 도도는
난이도 브론즈 등급의 문제로서
테스트 케이스만큼 문자열을 입력받았을 때
각 문자열의 부분 문자열 "for"와 "while" 개수를 구하고
해당되는 부분 문자열의 숫자가 최대인 문자열의 부분 문자열의 개수를 출력해주면 됩니다.
30분 정도 위에 링크를 방문하셔서 풀어보시고
안 풀리시는 경우에만 아래 해답을 봐주시면 감사하겠습니다.
선언형으로 풀려고 노력해보았습니다
테스트 케이스를 입력받고
테스트 케이스만큼
유저 입력으로부터 스트링 리스트를 만들고
"for"와 "while"과 일치하는 부분 문자열의 숫자의 최대 값을 찾은 다음
값이 존재한다면 출력합니다.
설명보다 코드가 더 깔끔한 것일 수도 있습니다.
아래 코드를 보시면 이해가 될 겁니다.
package com.bj;
// https://codemasterkimc.tistory.com/
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.OptionalInt;
import java.util.stream.IntStream;
public class Main {
final static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
final static List<String> codes = new ArrayList<>();
public static void main(String[] args) throws IOException {
int testCase = Integer.parseInt(br.readLine());
// make string code list from user input
// 유저 입력으로 부터 스트링 리스트를 만든다.
IntStream.rangeClosed(1, testCase)
.forEach((i) ->addInputCode());
// find max substring count for "for" and "while"
// "for" 와 "while"과 일치하는 부분 문자열의 수의 최대값을 찾는다.
OptionalInt maxIter = codes.stream()
.mapToInt(Main::findSubStrCount)
.max();
// if value exists, then print
// 값이 존재한다면 출력한다.
if (maxIter.isPresent()) {
System.out.print(maxIter.getAsInt());
}
}
private static void addInputCode() {
{
try {
codes.add(br.readLine());
} catch (IOException e) {
e.printStackTrace();
}
}
}
private static int findSubStrCount(String str) {
return countSubstr(str, "for") + countSubstr(str, "while");
}
private static int countSubstr(String parentStr, String subStr) {
return (parentStr.length() - parentStr.replace(subStr, "").length()) / subStr.length();
}
}
// ref
// https://stackoverflow.com/questions/767759/occurrences-of-substring-in-a-string
참조
문자열에서 부분문자열 개수 찾기
스트림 문자열에서 최대 길이 찾기
https://stackoverflow.com/questions/767759/occurrences-of-substring-in-a-string
읽어주셔서 감사합니다
무엇인가 얻어가셨기를 바라며
오늘도 즐거운 코딩 하시길 바랍니다 ~ :)
반응형
'Java > Java 알고리즘' 카테고리의 다른 글
백준 17103번 골드바흐 파티션 JAVA 구현해보기 (0) | 2022.03.01 |
---|---|
백준 23972번 JAVA 구현해보기 (0) | 2022.02.27 |
백준 15988번 1, 2, 3 더하기 3 JAVA 구현해보기 (0) | 2022.02.22 |
백준 10105번 Assigning Partners JAVA 구현해보기 (0) | 2022.02.20 |
백준 1057번 토너먼트 JAVA 구현해보기 (0) | 2022.02.19 |