반응형

문제

예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다.

크로아티아 알파벳변경
č c=
ć c-
dz=
đ d-
lj lj
nj nj
š s=
ž z=

예를 들어, ljes=njak은 크로아티아 알파벳 6개(lj, e, š, nj, a, k)로 이루어져 있다. 단어가 주어졌을 때, 몇 개의 크로아티아 알파벳으로 이루어져 있는지 출력한다.

dž는 무조건 하나의 알파벳으로 쓰이고, d와 ž가 분리된 것으로 보지 않는다. lj와 nj도 마찬가지이다. 위 목록에 없는 알파벳은 한 글자씩 센다.


입력

첫째 줄에 최대 100글자의 단어가 주어진다. 알파벳 소문자와 '-', '='로만 이루어져 있다.

단어는 크로아티아 알파벳으로 이루어져 있다. 문제 설명의 표에 나와있는 알파벳은 변경된 형태로 입력된다.


출력

입력으로 주어진 단어가 몇 개의 크로아티아 알파벳으로 이루어져 있는지 출력한다.


 예제 입출력

입력 출력
ljes=njak 6
ddz=z= 3
nljj 3
c=c= 2
dz=ak 3

풀이

-> replaceAll 메서드를 이용해서 주어진 문자열들을 입력문자열에 없는 'a'정도로 치환했다. 그 후 문자열의 길이를 구해서 리턴하려했다. 그런데 처음에는 원하는 결과가 나오지 않았다. word.replaceAll로 작성하고 word를 출력하니 입력받은 문자열이 그대로 나왔다. replaceAll 메서드는 원래의 변수자체를 수정해주는 것이 아니었다. 그래서 replaceAll한 값을 다시 word로 받아주었다.

코드

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String word = sc.nextLine();
        String[] croAlphabet = {"c=","c-","dz=","d-","lj","nj","s=","z="};

        for(int i=0;i<croAlphabet.length;i++){
            word = word.replaceAll(croAlphabet[i],"a");
        }

        int n = word.length();
        System.out.println(n);
    }
}
반응형

+ Recent posts