https://www.acmicpc.net/problem/2941
2941번: 크로아티아 알파벳
예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다. 크로아티아 알파벳 변경 č c= ć c- dž dz= đ d- lj lj nj nj š s= ž z=
www.acmicpc.net
indexOf() + StringBuffer.replace(a,b,"x")
package s07_string;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;
public class MJ_09_2941_2 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] arr = {"c=", "c-", "dz=", "d-", "lj", "nj", "s=", "z="};
String str = br.readLine();
StringBuffer sb = new StringBuffer(); // 버퍼 사용(원하는 위치의 문자를 변환하기 위함)!!!!
sb.append(str); //입력받은 문장 넣고
br.close();
int count = 0; // 크로아티아 문자의 갯수 세는 int 변수선언
for(int i=0; i<arr.length; i++) {
int idx = sb.indexOf(arr[i]); // 크파벳이 포함된 문자열 시작 위치
while(idx != -1) { // 크파벳이 존재하는 동안 (존재안하면 -1반환 하니까)
count++; // 문자 갯수 count
int idx2 = idx + arr[i].length(); // 사용된 크파벳의 끝 위치
sb.replace(idx, idx2, "0"); // 크파벳을 임의의 문자 "0"으로 변환 //*시작위치부터 끝 위치를 0으로 변환
/*
* StringBuffer 클래스의 replace 멤버 메서드는 특정 구간의 내용을 원하는 내용으로 대체할 때 사용합니다.
* 그리고 내용의 순서를 뒤집을 때 reverse 멤버 메서드를 사용합니다.
*/
idx = sb.indexOf(arr[i]); // 같은 크파벳이 사용된 위치가 있는지 다시 검색
}
}
for(int i=0; i<sb.length(); i++) {
if(sb.charAt(i) != '0')
count++; // 문자 갯수 count
}
System.out.println(count);
}
}
String[] arr = {"c=", "c-", "dz=", "d-", "lj", "nj", "s=", "z="}; 한번에 등록!
StringBuffer 클래스의 replace 멤버 메서드는 특정 구간의 내용을 원하는 내용으로 대체할 때 사용한다!!
그리고 내용의 순서를 뒤집을 때 reverse 멤버 메서드를 사용!!
"크로아티아 알파벳을 확인 후 임의의 문자로 변환 시켜놓고" "한번더 검사하는 것"
요게 포인트
//StringBuffer replace(int s,int e,String s)
//StringBuffer reverse()
public class Program {
public static void main(String[] args){
StringBuffer sb = new StringBuffer("01234567890");
sb.reverse();
System.out.println(sb);
sb.replace(2, 5, "ABCDE");
System.out.println(sb);
}
}
reverse : 09876543210
replace : 09ABCDE543210
'ONLINE JUDGE > 문자열' 카테고리의 다른 글
[백준5622] 다이얼 (0) | 2022.03.18 |
---|---|
[백준2908] 상수 (0) | 2022.03.11 |
[백준1152] 단어의 개수 (0) | 2022.03.11 |
[백준1157] 단어 공부 (0) | 2022.03.10 |
[백준2675] 문자열 반복 (0) | 2022.03.09 |
댓글