간단한 문자열 처리 문제입니다. 정규 표현식이나 Map을 활용하면 아주 간단하게 풀 수 있습니다.
// 정규 표현식 사용
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println(br.readLine().replaceAll("c=|c-|dz=|d-|lj|nj|s=|z=", "1").length());
}
}
사실 정규식이라고 할 것도 없습니다...^^;; 그냥 크로아티아 알파벳을 적당히 아무거나 치환해서 그 길이를 바로 리턴하면 됩니다.
// Map 사용
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
Map<String, String> map = new HashMap<>();
map.put("c=", "0");
map.put("c-", "1");
map.put("dz=", "2");
map.put("d-", "3");
map.put("lj", "4");
map.put("nj", "5");
map.put("s=", "6");
String str = br.readLine();
for(String key : map.keySet()) {
str = str.replaceAll(key, map.get(key));
}
map.put("z=", "7");
for(String key : map.keySet()) {
str = str.replaceAll(key, map.get(key));
}
System.out.println(str.length());
}
}
다음은 Map을 활용한 방법입니다. 이 때 조심해야 할 건 "dz="랑 "z="입니다. "dz=" 안에 "z="가 포함되어 있어서 큰 애를 먼저 바꿔주고 그 다음 "z="를 바꿔주는 식으로 했습니당.
감사합니다!!
'Algorithm > BOJ' 카테고리의 다른 글
[BOJ-1057][구현/완전 탐색] 토너먼트 - Java (0) | 2020.12.19 |
---|---|
[BOJ-2042][세그먼트 트리] 구간 합 구하기 - Java (0) | 2020.12.18 |
[BOJ-11003][슬라이딩 윈도우] 최솟값 찾기 - Java (0) | 2020.12.11 |
[BOJ-11659][구간 합] 구간 합 구하기 4 - Java (0) | 2020.12.11 |
[BOJ-2696][우선순위 큐] 중앙값 구하기 - Java (0) | 2020.12.10 |