Baekjoonアルゴリズム | 2941番問題: クロアチア文字

出典

https://www.acmicpc.net/problem/2941

問題

Baekjoon Online Judgeの2941番問題、クロアチア文字を解きます。

入力

正確な入力形式と制約は元の問題文に従います。

出力

問題で求められる答えを出力します。

サンプル入力 1

ljes=njak

サンプル出力 1

6

サンプル入力 2

ddz=z=

サンプル出力 2

3

サンプル入力 3

nljj

サンプル出力 3

3

サンプル入力 4

c=c=

サンプル出力 4

2

サンプル入力 5

dz=ak

サンプル出力 5

3

アルゴリズム分類

  • 実装
  • 文字列

解説

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {

    public static void main(String[] args) throws IOException {
        try (BufferedReader br = new BufferedReader(new InputStreamReader(System.in))) {

            String input = br.readLine();

            String[] chars = new String[]{"c=", "c-", "dz=", "d-", "lj", "nj", "s=", "z="};

            int count = 0;
            int fromIndex = 0;
            do {
                String searchChar = null;
                for (String ch : chars) {
                    if (input.startsWith(ch, fromIndex)) {
                        searchChar = ch;
                        break;
                    }
                }
                if (searchChar != null) {
                    fromIndex += searchChar.length();
                } else {
                    fromIndex++;
                }
                //System.out.println("searchChar=" + searchChar + ", fromIndex=" + fromIndex + ", input.length=" + input.length());
                count++;
            } while (input.length() > fromIndex);

            System.out.println(count);
        }
    }
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main2 {

    public static void main(String[] args) throws IOException {
        try (BufferedReader br = new BufferedReader(new InputStreamReader(System.in))) {

            String str = br.readLine();

            String[] chars = new String[]{"c=", "c-", "dz=", "d-", "lj", "nj", "s=", "z="};

            for (String c : chars) {
                str = str.replace(c, "_");
            }

            System.out.println(str.length());
        }
    }
}