본문 바로가기

Algorithm/BOJ

[BOJ-2941][문자열 처리/Map 활용] 크로아티아 알파벳 - Java

문제 바로가기

 

2941번: 크로아티아 알파벳

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

www.acmicpc.net

 

간단한 문자열 처리 문제입니다. 정규 표현식이나 Map을 활용하면 아주 간단하게 풀 수 있습니다.

 

// 정규 표현식 사용
import java.io.*;
import java.util.*;

public class Main {
	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		System.out.println(br.readLine().replaceAll("c=|c-|dz=|d-|lj|nj|s=|z=", "1").length());
	}
}

사실 정규식이라고 할 것도 없습니다...^^;; 그냥 크로아티아 알파벳을 적당히 아무거나 치환해서 그 길이를 바로 리턴하면 됩니다.

 

// Map 사용
import java.io.*;
import java.util.*;

public class Main {
	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		Map<String, String> map = new HashMap<>();
		map.put("c=", "0");
		map.put("c-", "1");
		map.put("dz=", "2");
		map.put("d-", "3");
		map.put("lj", "4");
		map.put("nj", "5");
		map.put("s=", "6");

		String str = br.readLine();
		
		for(String key : map.keySet()) {
			str = str.replaceAll(key, map.get(key));
		}
		
		map.put("z=", "7");
		
		for(String key : map.keySet()) {
			str = str.replaceAll(key, map.get(key));
		}
		
		System.out.println(str.length());
	}
}

 

다음은 Map을 활용한 방법입니다. 이 때 조심해야 할 건 "dz="랑 "z="입니다. "dz=" 안에 "z="가 포함되어 있어서 큰 애를 먼저 바꿔주고 그 다음 "z="를 바꿔주는 식으로 했습니당.

 

 

감사합니다!!