https://www.acmicpc.net/problem/2941
문제
예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다.
크로아티아 알파벳 변경
č 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
ljes=njak
예제 출력 1
6
예제 입력 3
nljj
예제 출력 3
3
Code
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] croatia = new String[]{"c=", "c-", "dz=", "d-", "lj", "nj", "s=", "z="};
String str = br.readLine();
// int count = 0;
for (String alphabet : croatia) {
if(str.contains(alphabet)){
str = str.replace(alphabet, "");
str = str.replace(alphabet, ".");
// count++;
}
}
System.out.println(str.length());
System.out.println(str.length() + count);
}
}
Point
처음 짠 코드는 주석을 해놓은 코드였다.
기존 문자열에서 contains()
메서드를 사용하여 크로아티아 문자열이 포함되어 있다면 빈칸으로 바꿔주며 새롭게 문자열로 다시 저장하며 count를 세어 더해주었다.
하지만 예제 입력 3번 문자가 lj
가 사라지며 nj
라는 크로아티아 문자로 변하면서 문제가 생겼다.
그래서 그냥 해당 문자열에서 크로아티아 문자를 전혀 다른 문자로 변경시켜 문자열의 길이를 출력하게 하니 더욱 깔끔하고 문제 없이 완료되었다.
'1.프로그래밍 > 알고리즘' 카테고리의 다른 글
[알고리즘] 백준 1193번 분수찾기 Java (0) | 2022.07.28 |
---|---|
[알고리즘] 프로그래머스 폰켓몬 Java (0) | 2022.07.26 |
[알고리즘] 백준 1065 한수 Java (0) | 2022.07.20 |
[알고리즘] 백준 4673 셀프 넘버 Java (1) | 2022.07.19 |
[알고리즘] Java 틱택토 게임 (Tic Tac Toe) (0) | 2022.07.15 |