코딩테스트/백준

[백준]2941번 크로아티아 알파벳 - Java

GAEBAL 2022. 3. 14. 00:08
728x90

문제

https://www.acmicpc.net/problem/2941

 

2941번: 크로아티아 알파벳

예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다. 크로아티아 알파벳 변경 č c= ć c- dž dz= đ d- lj lj nj nj š s= ž z=

www.acmicpc.net

 

풀이

그냥 케이스 나누고 인덱싱에 주의하면서 풀었음!

근데 같이 스터디하는 친구가 다른 방법으로 잘 풀어서 그것도 코드에 추가해 놓아야겠음 ㅎㅎㅎ

첫번째가 내가 그냥 푼 코드고 두번째가 새로 알게된 방식!

 

문자열을 다룰 때는 이처럼 내장 함수를 쓰면 많이 편하니까 평소에 자주 쓰는 버릇을 들여놔야겠다

이 코드에서는 String.contains()랑 String.replaceAll()가 쓰였음

 

String.contains(): 문자열에 ()안의 문자열을 포함하면 true 반환

String.replaceAll(): 문자열 안의 해당 문자열를 원하는 문자로 변경

 

코드

  • 내 풀이
// 2941번 크로아티아 알파벳
// https://www.acmicpc.net/problem/2941

package BAEKJOON;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Num2941_크로아티아알파벳 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String str = br.readLine();

        int length = str.length();
        int count = 0;

        for (int i = 0; i < length; i++) {

            char c = str.charAt(i);

            if(c == 'c' && i < length - 1) { // 문자가 c이고 마지막 문자가 아니면
                if(str.charAt(i + 1) == '=' || str.charAt(i + 1) == '-') {
                    i++;
                }
            } else if(c == 'd' && i < length - 1) { // 문자가 d이고 마지막 문자가 아니면
                if(str.charAt(i + 1) == '-') {
                    i++;
                } else if(str.charAt(i + 1) == 'z' && i < length - 2) { // dz인 경우 마지막에서 두번째 문자가 아니면
                    if(str.charAt(i + 2) == '=') {
                        i += 2;
                    }
                }
            } else if((c == 'l' || c == 'n') && i < length - 1) { // 문자가 l이거나 n이고 마지막 문자가 아니면
                if(str.charAt(i + 1) == 'j') {
                    i++;
                }
            } else if((c == 's' || c == 'z') && i < length - 1) { // 문자가 s이거나 z이고 마지막 문자가 아니면
                if(str.charAt(i + 1) == '=') {
                    i++;
                }
            }

            count++;
        }

        System.out.println(count);
    }
}

 

  • 새로 알게 된 풀이
package BJ;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class BJ_2941_크로아티아알파벳 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String input = br.readLine();

        String[] cro = {"c=", "c-", "dz=", "d-", "lj", "nj", "s=", "z="};

        for(int i=0; i<cro.length; i++){
            if(input.contains(cro[i]))
                input = input.replaceAll(cro[i],"*");
        }

        System.out.println(input.length());
    }
}
728x90