문제
예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다.
| 크로아티아 알파벳 | 변경 |
| č | c= |
| ć | c- |
| dž | dz= |
| đ | d- |
| lj | lj |
| nj | nj |
| š | s= |
| ž | z= |
예를 들어, ljes=njak은 크로아티아 알파벳 6개(lj, e, š, nj, a, k)로 이루어져 있다. 단어가 주어졌을 때,
몇 개의 크로아티아 알파벳으로 이루어져 있는지 출력한다.
dž는 무조건 하나의 알파벳으로 쓰이고, d와 ž가 분리된 것으로 보지 않는다. lj와 nj도 마찬가지이다.
위 목록에 없는 알파벳은 한 글자씩 센다.
입력
첫째 줄에 최대 100글자의 단어가 주어진다. 알파벳 소문자와 '-', '='로만 이루어져 있다.
단어는 크로아티아 알파벳으로 이루어져 있다. 문제 설명의 표에 나와있는 알파벳은 변경된 형태로 입력된다.
출력
입력으로 주어진 단어가 몇 개의 크로아티아 알파벳으로 이루어져 있는지 출력한다.
| 예제 입력 | 예제 출력 |
| ljes=njak | 6 |
| ddz=z= | 3 |
| nljj | 3 |
| c=c= | 2 |
| dz=ak | 3 |
⭕ 풀이
import java.util.*;
import java.io.*;
public class Main{
public static void main(String[] args)throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] croatia = {"c=","c-","dz=","d-","lj","nj","s=","z="};
String str = br.readLine();
br.close();
for(int i=0;i<croatia.length;i++){
str = str.replaceAll(croatia[i],"*");
}
System.out.print(str.length());
}
}
✅ 우선 크로아티아 알파벳의 배열을 만들었다.
이후 replaceAll메서드를 활용해 크로아티아 알파벳이 있다면 해당문자열을 *로 치환했다.
for문 안에서 if문으로 contains값이 true라면 replace를 했는데 그럴 필요가 없을것같아 간략화했다.
-출처
https://www.acmicpc.net/problem/2941
'Algorithm > Baekjoon(Java)' 카테고리의 다른 글
| [백준/JAVA] 1712 : 손익분기점 ( 기본 수학 1 ) (0) | 2022.07.30 |
|---|---|
| [백준/JAVA] 1316 : 그룹 단어 체커 ( prev = 0 ) (0) | 2022.07.29 |
| [백준/JAVA] 5622 : 다이얼 (0) | 2022.07.27 |
| [백준/JAVA] 2908 : 상수 ( 메서드안에서 new StringBuilder ) (0) | 2022.07.26 |
| [백준/JAVA] 1152 : 단어의 개수 ( System.in.read(); ) (0) | 2022.07.25 |