반응형
문제(출처)
예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다.
따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다.
크로아티아 알파벳 변경
č 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
예제 입력2
ddz=z=
예제 출력2
3
내 풀이
import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;
public class Main { public static void main(String args[]) { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
try { String str = br.readLine(); int result = checkStr(str); bw.write(String.valueOf(result)); bw.flush(); bw.close();
} catch (IOException e) { e.printStackTrace(); } }
private static int checkStr(String str) { String[] croatia = croatiaStr();// 크로아티아 문자를 배열로 선언합니다.
for (int j = 0; j < croatia.length; j++) { str = str.replace(croatia[j], "1");// 해당하는 문자를 1로 치환합니다. } return str.length();// 길이를 반환합니다. }
private static String[] croatiaStr() { String[] croatia = new String[8]; croatia[0] = "c="; croatia[1] = "c-"; croatia[2] = "dz="; croatia[3] = "d-"; croatia[4] = "lj"; croatia[5] = "nj"; croatia[6] = "s="; croatia[7] = "z=";
return croatia; }}
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Main {
public static void main(String args[]) {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
try {
String str = br.readLine();
int result = checkStr(str);
bw.write(String.valueOf(result));
bw.flush();
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
private static int checkStr(String str) {
String[] croatia = croatiaStr();
// 크로아티아 문자를 배열로 선언합니다.
for (int j = 0; j < croatia.length; j++) {
str = str.replace(croatia[j], "1");
// 해당하는 문자를 1로 치환합니다.
}
return str.length();
// 길이를 반환합니다.
}
private static String[] croatiaStr() {
String[] croatia = new String[8];
croatia[0] = "c=";
croatia[1] = "c-";
croatia[2] = "dz=";
croatia[3] = "d-";
croatia[4] = "lj";
croatia[5] = "nj";
croatia[6] = "s=";
croatia[7] = "z=";
return croatia;
}
}
내 풀이 해석
입력 받은 문자를 크로아티아 문자와 비교하여 같으면 1로 치환합니다.
치환 된 문자열의 길이를 반환합니다.
반응형
'개발(합니다) > 알고리즘&코테' 카테고리의 다른 글
알고리즘 단계별로 풀어보기 : BOJ-1193(분수찾기) (0) | 2018.12.23 |
---|---|
알고리즘 단계별로 풀어보기 : BOJ-2292(벌집) (0) | 2018.12.23 |
알고리즘 단계별로 풀어보기 : BOJ-5622(다이얼) (0) | 2018.12.22 |
알고리즘 단계별로 풀어보기 : BOJ-2908(상수) (0) | 2018.12.22 |
알고리즘 단계별로 풀어보기 : BOJ-1316(그룹단어체커) (0) | 2018.12.22 |