자바알고리즘 - 문자열 - 백준 2941 크로아티아 알파벳
문제
예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다.
크로아티아 알파벳변경
č | c= |
ć | c- |
dž | dz= |
đ | d- |
lj | lj |
nj | nj |
š | s= |
ž | z= |
예를 들어, ljes=njak은 크로아티아 알파벳 6개(lj, e, š, nj, a, k)로 이루어져 있다. 단어가 주어졌을 때, 몇 개의 크로아티아 알파벳으로 이루어져 있는지 출력한다.
dž는 무조건 하나의 알파벳으로 쓰이고, d와 ž가 분리된 것으로 보지 않는다. lj와 nj도 마찬가지이다. 위 목록에 없는 알파벳은 한 글자씩 센다.
생각
1. 문제에서 나온 문자들에 대해서만 if문 처리를 해준다.
2. 단, 만약에 d가 나오면 뒤에 문자가 z인지 z면 그다음문자가 = 인지 확인해야하는데 해당 경우에는 인덱스 범위를 넘어가 버릴 수 있다.
3. 해당 경우 방지를 위해 전체사이즈 -2 가 i 보다 작으면 진행한다는 조건 등이 있어야한다.
코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class BackJoon_2941 {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
String str = bf.readLine();
int count =0;
for(int i=0 ; i<str.length();i++) {
char ch = str.charAt(i);
if(ch=='c') {
if(i<str.length()-1) {
if(str.charAt(i+1) == '=') {
i++;
}
else if(str.charAt(i+1)=='-') {
i++;
}
}
}
else if(ch=='d') {
if(i<str.length()-1) {
if(str.charAt(i+1)=='z'){
if(i<str.length()-2) {
if(str.charAt(i+2)=='='){
i+=2;
}
}
}
else if(str.charAt(i+1)=='-'){
i++;
}
}
}
else if(ch == 'l') {
if(i < str.length() - 1) {
if(str.charAt(i + 1) == 'j') { // lj 일 경우
i++;
}
}
}
else if(ch == 'n') {
if(i < str.length()- 1) {
if(str.charAt(i + 1) == 'j') { // nj 일 경우
i++;
}
}
}
else if(ch == 's') {
if(i < str.length() - 1) {
if(str.charAt(i + 1) == '=') { // s= 일 경우
i++;
}
}
}
else if(ch == 'z') {
if(i < str.length() - 1) {
if(str.charAt(i + 1) == '=') { // z= 일 경우
i++;
}
}
}
count++;
}
System.out.println(count);
}
}
'알고리즘 > 입출력,문자열' 카테고리의 다른 글
자바알고리즘 - 문자열 - 백준 1316 그룹 단어 체커 (0) | 2024.10.11 |
---|---|
자바알고리즘 - 문자열 - 백준 1157 단어 공부 (0) | 2024.10.08 |
자바알고리즘 - 문자열 - 백준 11718 그대로 출력하기 (0) | 2024.10.08 |
자바알고리즘 - 문자열 - 백준 5622 다이얼 (2) | 2024.10.08 |
자바알고리즘 - 문자열 - 백준 2908 상수 (0) | 2024.10.08 |