본문 바로가기
프로그래밍/백준 알고리즘 코드

백준 2941번 자바 java 크로아티아 알파벳 [문자열]

by 졸린이 2020. 9. 29.
반응형

크로아티아 알파벳이 몇 개 입력 되었는지 출력해주는 프로그램이다. ć, dž 이렇게 이상하게 생긴것들은 위에 표와 같이 변환해서 입력이 된다.

 ljes=njak은 크로아티아 알파벳 6개(lj, e, š, nj, a, k) 일반 알파벳은 하나는 하나로 세고 변환된 것들은 여러문자가 붙어있을 경우 하나로 묶어서 한개로 세야 한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import java.util.Scanner;
 
//baekjoon_2931_크로아니타 알파벳
public class Main{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str[] = {"c=""c-""dz=""d-""lj""nj""s=""z="};
        
        String st = sc.nextLine();
        
        for(int i=0; i<str.length; i++) {
            if(st.contains(str[i]))
                st = st.replace(str[i], "!");
        }
        System.out.println(st.length());
    }
}
cs

line 7 : 변환해야하는 문자열만 문자열배열을 생성하여 초기화 해준다. str[] 배열에 있는 문자열들은 하나의 개수로 센다.

line 9 : 문자열 입력.

line 11 : 이 for문은 변환해야하는 알파벳들을 변환하는 반복문이다.

str[]문자열 배열을 훑으면서 변환할 문자가 있는지 검사한다. 때문에 배열크기만큼 반복.

line 12 : st.contains(str[i]) 배열에 있는 원소가 사용자가 입력한 st문자열에 있는지 검사하는 함수다.

예를들어 "c="이 st문자열에 있으면 true가 리턴되어 if문 안으로 들어간다.

line 13 : replace(string, string)함수를 이용한다. st문자열에 str[i]은 하나의 개수로 카운트 해야하므로 "!" 로 변환해준다.

(특수문자로 변환하는 이유는 알파벳으로 변환했다간 다음 검사때 중복카운트가 되는 경우를 방지, 다른 특수문자도 가능)

line 15 : 재배치된 st문자열의 크기를 출력해주면 된다.

 

반응형

댓글