[Baekjoon] 2941번 문제풀이 - 크로아티아 알파벳
2020. 8. 7. 18:01ㆍComputer Sciences/Problem Solve
문제를 이해하는 것부터 난관이었어요 ㅠㅜ 기존 알파벳에 크로아티아 알파벳이 추가된 것이고 여러 문자로 이루어져 있으니 그 문자들을 하나로 보고 입력받은 문자열의 알파벳 개수를 세면 되는 것이었습니다.
한 마디 > a~z + 크로아티아 알파벳
이 문제를 푸는 방법으로 생각한 것은 먼저 크로아티아 알파벳들을 배열로 만듭니다. 그리고 문자열에서 배열의 순서대로 해당 문자를 포함하고 있다면 카운트하고 그 문자를 공백으로 치환합니다(나중에 크로아티아 알파벳을 제외한 문자의 길이를 얻기 위해서). 비교가 모두 끝나면 문자열의 공백을 제거하고 그 문자열의 길이를 얻으면 크로아티아 알파벳 개수 + 알파벳 개수를 구할 수 있습니다. 코드를 봅시다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Baekjoon2941 {
public static void main(String[] args) {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = null;
try {
str = br.readLine();
} catch (IOException e) {
e.getStackTrace();
}
String[] match = { "c=", "c-", "dz=", "d-", "lj", "nj", "s=", "z=" };
int alphaCount = 0;
for (int i = 0; i < match.length; i++) {
while (str.contains(match[i])) {
alphaCount += 1;
str = str.replaceFirst(match[i], " ");
}
}
str = str.replace(" ", "");
alphaCount += str.length();
System.out.println(alphaCount);
}
}
replaceFirst를 쓴 이유는 혹시나 문자열에 포함된 크로아티아 알파벳이 여러 개인데 한꺼번에 모두 치환돼서 카운트를 하지 못할까봐 replaceFirst를 사용했습니다.
'Computer Sciences > Problem Solve' 카테고리의 다른 글
[Baekjoon] 1717번 문제풀이 - 손익분기점 (0) | 2020.08.11 |
---|---|
[Baekjoon] 1316번 문제풀이 - 그룹 체커 (0) | 2020.08.07 |
[Baekjoon] 5622번 문제풀이 - 다이얼 (0) | 2020.08.07 |
[Baekjoon] 2908번 문제풀이 (0) | 2020.08.05 |
[Baekjoon] 1152번 문제풀이 (0) | 2020.08.05 |