2022. 10. 21. 22:55ㆍ알고리즘/코딩테스트(백준)
문제
예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다.
크로아티아 알파벳변경č | c= |
ć | c- |
dž | dz= |
đ | d- |
lj | lj |
nj | nj |
š | s= |
ž | z= |
예를 들어, ljes=njak은 크로아티아 알파벳 6개(lj, e, š, nj, a, k)로 이루어져 있다. 단어가 주어졌을 때, 몇 개의 크로아티아 알파벳으로 이루어져 있는지 출력한다.
dž는 무조건 하나의 알파벳으로 쓰이고, d와 ž가 분리된 것으로 보지 않는다. lj와 nj도 마찬가지이다. 위 목록에 없는 알파벳은 한 글자씩 센다.
입력
첫째 줄에 최대 100글자의 단어가 주어진다. 알파벳 소문자와 '-', '='로만 이루어져 있다.
단어는 크로아티아 알파벳으로 이루어져 있다. 문제 설명의 표에 나와있는 알파벳은 변경된 형태로 입력된다.
1. 크로아티아 알파벳을 List에 저장한다.
2. 입력받은 문자열이 List에 저장된 크로아티아 알파벳을 포함하고 있는지 차례대로 검사한다.
3. 문자열 중 List에 저장된 크로아티아 알파벳이 포함되어 있다면, 해당 크로아티아 알파벳을 'A'로 변경한다
(문제 설명에 대문자 알파벳이 주어지는 경우는 없다고 나와있다. 만약 'A'가 아닌 공백으로 변경하면, 해당 알파벳 전후로 합쳐진 알파벳이 새로운 크로아티아 알파벳이 되는 경우가 생겨 임의의 'A'로 치환하였다.).
4. 'A'로 치환한 문자열의 길이를 출력하면 되겠다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.List;
public class Main {
static List<String> list = Arrays.asList("c=", "c-", "dz=", "d-", "lj", "nj", "s=", "z=");
static int count = 0;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String s = br.readLine();
for (int i = 0; i < list.size(); i++) {
while(s.contains(list.get(i))){
s = s.replaceAll(list.get(i), "A");
}
}
System.out.println(s.length());
}
}
무수한 오답이 터졌는데 이 문제에 대한 반례소스가 다행히도 존재했다.
이 링크에서 나도 반례를 찾아 고쳐 문제를 해결할 수 있었다.
https://bingorithm.tistory.com/9
'알고리즘 > 코딩테스트(백준)' 카테고리의 다른 글
백준 11060: 점프점프 [Java] - 포포 (0) | 2022.10.25 |
---|---|
백준 1495: 기타리스트 (0) | 2022.10.22 |
백준 4659: 비밀번호 발음하기 [Java] - 포포 (0) | 2022.10.21 |
백준 1238: 파티 [Java] - 포포 (1) | 2022.09.11 |
백준 1463: 1로 만들기 [Java] -포포 (0) | 2022.09.01 |