현재
[Java][BaekJoon][2941] 크로아티아 알파벳 본문
<문제의도>
의도에 맞는 적절한 조건문으로 조건을 찾고
예외처리를 할 수 있느냐 묻는 문제이다.( 배열의 범위를 벗어났을 경우 )
<풀이코드>
import java.util.Scanner;
public class BaekJoon_Java_2941 {
public static void main(String[] args) {
Scanner scn = new Scanner(System.in);
String str = scn.nextLine();
int count = 0;
char Strings [] = new char[str.length()];
for ( int i = 0 ; i < str.length(); i++ ){
Strings[i] = str.charAt(i);
}
for ( int i = 0 ; i < str.length(); i++ ){ //c단어 일때
if (Strings[i] == 'c'){
if ( i < str.length() - 1){
if (Strings[i+1] == '=' || Strings[i+1] == '-' ){
i += 1;
}
}
}
else if (Strings[i] == 'd'){ // d일때
if ( i < str.length() - 1){
if (Strings[i+1] == '-' ){
i += 1;
}
else if(Strings[i+1] == 'z' ){
if ( i < str.length() - 2){
if(Strings[i+2] == '='){
i += 2;
}
}
}
}
}
else if (Strings[i] == 'l'){ //l일때
if ( i < str.length() - 1){
if (Strings[i+1] == 'j'){
i += 1;
}
}
}
else if (Strings[i] == 'n'){ //n일때
if ( i < str.length() - 1){
if (Strings[i+1] == 'j'){
i += 1;
}
}
}
else if (Strings[i] == 's'){ //s일때
if ( i < str.length() -1 ) {
if (Strings[i+1] == '='){
i += 1;
}
}
}
else if (Strings[i] == 'z'){ //z일때
if ( i < str.length() - 1){
if (Strings[i+1] == '='){
i += 1;
}
}
}
count++;
}
System.out.println(count);
}
}
<해결 과정>
특정문자 다음을 찾는 과정에서 배열의 크기를 넘어가는 문제가 발생하였다.
(vsCode에서 실행했을때는 문제가 없었지만, 제출할 때 문제 발생)
그래서 처음에는 특별한 API가 있나 찾아보았지만 특별한 API는 없어서 i가 배열의 길이보다 적을때만
가능하도록 추가하였다. 살짝 어거지로 푼 느낌이 들었었는데 다른사람들도 비슷하게 푼사람들도 있어서
다행이라고 생각하였다. ( 조건을 생각하는데만 2시간은 걸린듯 하다.. ㅋ )
<문제 출처>
https://www.acmicpc.net/problem/2941
2941번: 크로아티아 알파벳
예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다. 크로아티아 알파벳 변경 č c= ć c- dž dz= đ d- lj lj nj nj š s= ž z=
www.acmicpc.net
'알고리즘 > 백준' 카테고리의 다른 글
| [Java][BaekJoon][2292] 벌집 (0) | 2023.10.17 |
|---|---|
| [Java][BaekJoon][1316] 그룹 단어 체커 (★☆☆) (0) | 2023.10.06 |
| [Java][BaekJoon][1157] 단어 공부 (0) | 2023.09.29 |
| [Java][BaekJoon][10988] 별 찍기-7 (0) | 2023.09.28 |
| [Java][BaekJoon][10988] 팰린드롬인지 확인하기 (0) | 2023.09.27 |