- 크로아티아 알파벳의 개수를 세는 문제
https://www.acmicpc.net/problem/2941
1. 문제
예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다.
예를 들어, ljes=njak은 크로아티아 알파벳 6개(lj, e, š, nj, a, k)로 이루어져 있다. 단어가 주어졌을 때, 몇 개의 크로아티아 알파벳으로 이루어져 있는지 출력한다.
dž는 무조건 하나의 알파벳으로 쓰이고, d와 ž가 분리된 것으로 보지 않는다. lj와 nj도 마찬가지이다. 위 목록에 없는 알파벳은 한 글자씩 센다.
2. 문제 접근
- 문자열을 입력받는다.
- 정수형 변수에 문자열의 길이를 저장한다.
- 문자열의 char를 하나씩 접근하면서 다음 조건이 있을 경우 정수형 변수의 값을 1씩 뺀다.
1) '-'이고 앞의 char가 'c' 혹은 'd'일 경우
2) '='이고 앞의 char가 'c' 혹은 'z' 혹은 's' 혹은 'z'인 경우
3) 2)번의 'z'인 경우 중 하나 더 앞의 char가 'd'인 경우
3. 코드
import java.io.IOException;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class b_2941 {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String input = br.readLine();
int word = input.length();
for(int i=1;i<input.length();i++) {
if(input.charAt(i)=='-' && (input.charAt(i-1)=='c' || input.charAt(i-1)=='d')) {
word--;
}
else if(input.charAt(i)=='=' && (input.charAt(i-1)=='c' || input.charAt(i-1)=='z' || input.charAt(i-1)=='s')) {
if(i>=2 && input.charAt(i-2)=='d' && input.charAt(i-1)=='z') {
word--;
}
word--;
}
else if(input.charAt(i)=='j' && (input.charAt(i-1)=='l' || input.charAt(i-1)=='n')) {
word--;
}
}
System.out.println(word);
}
}
'백준 > JAVA' 카테고리의 다른 글
[백준/JAVA] 10757번 큰 수 A+B (0) | 2023.01.19 |
---|---|
[백준/JAVA] 1316번 그룹 단어 체커 (2) | 2023.01.19 |
[백준/JAVA] 2908번 상수 (0) | 2023.01.18 |
[백준/JAVA] 단계별로 풀어보기(5단계) 코드 모음 (0) | 2023.01.18 |
[백준/JAVA] 단계별로 풀어보기(4단계) 코드 모음 (0) | 2023.01.18 |