문제 내용은 입력으로 입력 갯수를 받은 뒤, 이후 문자열을 받아서 문자열 내에 for 혹은 while이 몇개가 들어있는지 확인한 후, 가장 많이 들어있었던 문자열의 for/while 갯수를 출력해주면 된다.
예제 입력 1에서는 3번째 줄에 forwhileforfor가 4개로 가장 많으니 4를 출력하고, 예제 입력 2에서는 for/while이 들어있는 문자열이 하나도 없으니 0을 출력한다
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int count = Integer.parseInt(br.readLine());
int max = 0;
for (int i = 0; i < count; i++) {
String testStr = br.readLine();
Pattern pattern = Pattern.compile("for|while");
Matcher matcher = pattern.matcher(testStr);
int current = 0;
while (matcher.find()) {
current++;
}
if (max < Math.max(max, current)) {
max = current;
}
}
System.out.println(max);
}
}
문제 풀이는 Pattern / Matcher 에 대해 알고 있었으면 해결할 수 있는데 Pattern으로 원하는 값을 설정해 놓고 이후 Matcher에 문자열 넣고 find 메소드로 돌리면서 나올 때마다 1씩 증가 시켜주면 문자열 내에 for/while이 몇개 들어갔는지 확인할 수 있는데
문자열을 모두 확인한 뒤에는 Math.max로 이전 최대값과 비교해서 최대값을 저장한 뒤, 반복문이 끝나고 난 뒤에는 최대값을 출력해주면 끝이다
Leave a Reply