본문 바로가기
백준알고리즘

백준알고리즘:p2941 크로아티아 알파벳

by socialcomputer 2021. 3. 9.

분류: 문자열

 

문제

 

코드

//백준알고리즘 제출시 클래스 이름은 Main으로 바꿔야 됨 
package character_string;

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

public class p2941 {

	public static void main(String[] args) {
		try(BufferedReader br = new BufferedReader(new InputStreamReader(System.in));){
			String s = br.readLine();
			int count =0;
			for(int i=0; i<s.length(); i++) {
				char c = s.charAt(i);
				if(c=='c') {
					if(s.charAt(i+1)=='=') {count+=1; i++;}
					else if(s.charAt(i+1)=='-') {count+=1; i++;}
					else count+=1;
				}
				else if(c=='d') {
					if(s.charAt(i+1)=='z') {if(s.charAt(i+2)=='=') count+=1; i+=2;}
					else if(s.charAt(i+1)=='-') {count+=1; i++;}
					else count+=1;
				}
				else if(c=='l') {
					if(s.charAt(i+1)=='j') {count+=1; i++;}
					else count+=1;
				}
				else if(c=='n') {
					if(s.charAt(i+1)=='j') {count+=1; i++;}
					else count+=1;
				}
				else if(c=='s') {
					if(s.charAt(i+1)=='=') {count+=1; i++;}
					else count+=1;
				}
				else if(c=='z') {
					if(s.charAt(i+1)=='=') {count+=1; i++;}
					else count+=1;
			}
				else count+=1;
			}
			System.out.print(count);
		}catch(Exception e) {e.printStackTrace();}
	}
}

▶런타임 에러 뜸: 모든 경우의 수 일일이 다 나눠서 했더니..

//다시
package character_string;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class p2941 {

	public static void main(String[] args) {
		try(BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
				BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));){
			String s = br.readLine();
			String[] arr = {"c=", "c-","dz=","d-","lj","nj","s=","z="};
			for(int i=0; i<arr.length; i++) {
				s=s.replace(arr[i], "*");
			}
			bw.write(String.valueOf(s.length())); //bw.write쓰기는 문자 출력이니까 바꿔서.. 아니면 +"\n"하거나
			bw.flush();
			bw.close();
			br.close();
		}catch(Exception e) {e.printStackTrace();}
	}
}

▶인터넷으로 찾아보다가 한 블로그를 보고 따라해 봤다... 출처: blog.naver.com/qkrdydrjs7/221959726150 출처 이렇게 해도 되는건지 모르겠다..

먼저 문자열 배열에 크로아티아 알파벳들을 넣어놓고.

replace를 사용해 해당 문자가 있으면 *로 바꿔준 후

문자열 길이를 출력해준다.

dz=와 z=이 오류를 일으킬수도 있는데,

여기선

arr배열에서 dz=을 먼저 검사하기 떄문에 오류가 나타나지 않는다.

 


채점결과

맨 위에가 replace 쓴거

 

링크 www.acmicpc.net/problem/2941

 

2941번: 크로아티아 알파벳

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

www.acmicpc.net

 

댓글