ETC. 백준 알고리즘 자바 2941 ‘크로아티아 알파벳’ 문제풀이

less than 1 minute read

Problem

Solution

처음에 switch-case문을 사용했는데, 다른 분이 배열과 replace를 사용한 것을 보고..와우!
1) i번째 문자와 i+1번째 문자를 묶어서 크로아티아 알파벳과 비교한다. 맞으면 다음 인덱스 i값을 비교 다음 문자를 가리키도록 증가시킨다. 매 연산 시 단어의 합계를 증가시킨다.
메모리: 12888KB, 속도: 76MS 2) String 배열에 크로아티아 알파벳을 전부 저장한다. 알파벳이 발견된 곳을 ‘a’로 replace 한다. 모든 replace가 종료된 후의 문자열의 크기가 단어의 합계가 된다.
메모리: 13000KB, 속도: 72MS

Code

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class Main {
	public static void main(String[] args) throws IOException{
		String word = new BufferedReader(new InputStreamReader(System.in)).readLine();
		
		int sum = 0, i;
		for(i = 0; i < word.length()-1; i++) {
			switch(Character.toString(word.charAt(i))+Character.toString(word.charAt(i+1))) {
			case "c=":case "c-":case "d-":
			case "lj":case "nj":case "s=":case "z=": i++; break;
			case "dz": if(word.charAt(i+2) == '=') i += 2; break;	
			}
			sum++;
		}
		System.out.print(i == word.length()-1 ? sum+1 : sum);
	}
}
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class Main {
	public static void main(String[] args) throws IOException{
		String word = new BufferedReader(new InputStreamReader(System.in)).readLine();	
		String[] alphabet = {"c=", "c-", "dz=", "d-", "lj", "nj", "s=", "z="};
		
        for(String str : alphabet) word = word.replace(str, "a");
		System.out.print(word.length());
	}
}

Tags:

Updated: