[BOJ]2941クロアチア文字(JAVA)
に質問
以前はオペレーティングシステムでクロアチア文字を入力できませんでした.したがって、クロアチア文字の入力は次のように変更します.
クロアチア文字の変化ćc-dždz=đd-ljljnjnjšs=žz=
例えばljes=njakには6つのクロアチア文字(lj,e,š, nj,a,kからなる.単語が与えられると、出力はいくつかのクロアチア文字で構成されます.
džアルファベット、dとž分離とは思えない.ljもnjも同じです.上のカタログにないアルファベットは、一字一字数えています.
入力
最初の行には最大100文字の単語があります.小文字「-」、「=」で構成されています.
単語はクロアチア文字で構成されています.質問説明表のアルファベットを変更形式で入力します.
しゅつりょく
入出力所与の単語はいくつかのクロアチア文字からなる.
例1
▼入力
▼入力
▼入力
▼入力
単語→大文字
大文字は、文字列配列(
入力された単語(
また、導入部では、kparbetの使用開始位置(インデックス)を
同じ文字が入力された単語で複数回使用される可能性があるため、
また、大文字を使用しているので文字数を計算します.
ループを終了すると、大文字以外の文字が残ります.単語のすべての文字を複文でチェックし、
💻 コード#コード#
以前はオペレーティングシステムでクロアチア文字を入力できませんでした.したがって、クロアチア文字の入力は次のように変更します.
クロアチア文字の変化ćc-dždz=đd-ljljnjnjšs=žz=
例えばljes=njakには6つのクロアチア文字(lj,e,š, nj,a,kからなる.単語が与えられると、出力はいくつかのクロアチア文字で構成されます.
džアルファベット、dとž分離とは思えない.ljもnjも同じです.上のカタログにないアルファベットは、一字一字数えています.
入力
最初の行には最大100文字の単語があります.小文字「-」、「=」で構成されています.
単語はクロアチア文字で構成されています.質問説明表のアルファベットを変更形式で入力します.
入出力所与の単語はいくつかのクロアチア文字からなる.
例1
▼入力
ljes=njak
▼出力6
例2▼入力
ddz=z=
▼出力3
例3▼入力
nljj
▼出力3
例4▼入力
c=c=
▼出力2
に答える単語→大文字
大文字は、文字列配列(
cAlpha
)に予め格納されている.入力された単語(
str
)ではなく、アルファベット順にfor
ゲートを回します.str
を基準にループを実行すると、構文テーブルが見つかりにくくなります.また、導入部では、kparbetの使用開始位置(インデックス)を
StringBuffer.indexOf()
を用いて伝達する.アルファベットが使用されている場合、このメソッドは文字の開始位置を返し、アルファベットでない場合は-1
を返します.同じ文字が入力された単語で複数回使用される可能性があるため、
for
文の内部で複文を再実行する必要がある.인덱스 =! -1
でない場合、大文字は任意の文字に変換されます.これは、1文字しか認識されず、String.replace()
は必要な位置の文字だけを削除できないため、StringBuffer.replace()
を使用する必要があります.また、大文字を使用しているので文字数を計算します.
ループを終了すると、大文字以外の文字が残ります.単語のすべての文字を複文でチェックし、
str의 알파벳!=임의의 문자
であれば文字数を計算します.import java.util.Scanner;
public class Main {
public static void main(String[] args) {
String[] cAlpha = {"c=", "c-", "dz=", "d-", "lj", "nj", "s=", "z="};
Scanner scanner = new Scanner(System.in);
String str = scanner.nextLine(); // 단어 입력받기
StringBuffer sb = new StringBuffer(); // 버퍼 사용(원하는 위치의 문자를 변환하기 위함)
sb.append(str);
scanner.close();
int cnt = 0; // 문자의 갯수
for(int i=0; i<cAlpha.length; i++) {
int idx = sb.indexOf(cAlpha[i]); // 크파벳이 포함된 문자열 시작 위치
while(idx != -1) { // 크파벳이 존재하는 동안
cnt++; // 문자 갯수 count
int idx2 = idx + cAlpha[i].length(); // 사용된 크파벳의 끝 위치
sb.replace(idx, idx2, "0"); // 크파벳을 임의의 문자 "0"으로 변환
idx = sb.indexOf(cAlpha[i]); // 같은 크파벳이 사용된 위치가 있는지 검색
}
}
for(int i=0; i<sb.length(); i++) {
if(sb.charAt(i) != '0')
cnt++; // 문자 갯수 count
}
System.out.println(cnt);
}
}
Reference
この問題について([BOJ]2941クロアチア文字(JAVA)), 我々は、より多くの情報をここで見つけました https://velog.io/@yu-jin-song/BOJ-2941-크로아티아-알파벳-JAVAテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol