한 걸음 두 걸음

백준 2941 크로아티아알파벳 ] 문자열처리 본문

CSE/baekjoon & swexpert

백준 2941 크로아티아알파벳 ] 문자열처리

언제나 변함없이 2019. 3. 7. 19:30
반응형

너무 하드코딩인데,,, 다른 방법 찾아봐야겠다 ㅠ

import java.util.*;
import java.io.*;

public class Main {
    public static void main(String[] args){

        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine();
        int strCase = str.length();
        str = str+"aaaa";
        int result = 0;

        for(int i = 0 ; i < strCase; i++ )
            switch(str.charAt(i)){
            case 'c':
                if(str.charAt(i+1)=='='||str.charAt(i+1)=='-') {result++; i++; continue;}
                else {result++; continue;}
            case 'd':
                if(str.charAt(i+1)=='z' && str.charAt(i+2) =='=') {result++; i+=2; continue;}
                else if(str.charAt(i+1)=='-') {result++; i++; continue;}
                else {result++; continue;}
            case 'l':
                if(str.charAt(i+1)=='j') {result++; i++; continue;}
                else {result++; continue;}
            case 'n':
                if(str.charAt(i+1)=='j') {result++; i++; continue;}
                else {result++; continue;}
            case 's':
                if(str.charAt(i+1)=='=') {result++; i++; continue;}
                else {result++; continue;}
            case 'z':
                if(str.charAt(i+1)=='=') {result++; i++; continue;}
                else {result++; continue;}
            default :
                result++; continue;
            }

        System.out.println(result);

        }
}


  1. 전체 문자열에서 위의 크로아티아알파벳에 해당하는 경우를 replace해주는 방식.
    dz=를 "d"로,
    -, =를 ""로.
    lj를 l로,
    nj를 n으로 바꿔버리면
    위의 표에서 해당하는 크로아티아 알파벳 외의 알파벳도 1개씩 세주니까
    replace이후 전체 문자열의 길이를 반환해주면 정답이 된다.

  2. switch말고 if-else if로 짜면 보다 더 짧아지긴함!

반응형