백준 Silver5 2941 - 크로아티아 알파벳

JH·2022년 9월 26일
0

백준 알고리즘

목록 보기
5/29
post-thumbnail

문제

입력

출력

예제

idea

간단하게 String으로 문자열 받은 후 각 자리마다 확인을 하여 예를 들면 c= 을 생각했을 때 현재 자리가 c인데 다음 자리도 = 일 경우 for문을 한번 덜 돌게하여 총 개수를 구하는 방법으로 하였다.
결과적으로는 맞추긴 했지만 이것저것 반례가 많아 수많은 수정을 해야만 했다.
예를 들면 다음 자리값을 비교를 해주는 if문을 만들었더니 마지막 자리값에 c가 나올 경우 다음 자리값은 null이지만 비교를 해주어야하기 때문에 런타임에러가 났고 비슷한 느낌으로 break과 continue를 잘못쓴다거나 여러가지 자잘한 오류가 많았다.
문제 자체의 난이도는 어렵지 않았지만 함정이 많은 문제였다.

정리

각 조건에 맞게 문자가 조합될 경우 for문의 i를 ++시켜 sum이 1만큼 줄어들게 함.
자잘한 조건을 모두 확인한 후 맞춰주어야함.

Code

import java.util.*;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		Scanner in = new Scanner(System.in);

		String x;
		char y[];
		int sum = 0;

		x = in.next();
		y = x.toCharArray();

		for (int i = 0; i < y.length; i++) {
			sum++;
			if (i < y.length-1) {
				if (y[i] == 'c') {
					if (y[i + 1] == '=' || y[i + 1] == '-')
						i++;
				}
				else if (y[i] == 'd') {
					if (i < y.length - 2) {
						if (y[i + 1] == 'z' && y[i + 2] == '=') {
							i += 2;
							continue;
						}
					}
					if (y[i + 1] == '-')
							i++;
					}
				 else if (y[i] == 'l') {
					if (y[i + 1] == 'j')
						i++;
				 }
				 else if (y[i] == 'n') {
					if (y[i + 1] == 'j')
						i++;
				 }
				 else if (y[i] == 's') {
					if (y[i + 1] == '=')
						i++;
				 }
				 else if (y[i] == 'z') {
					if (y[i + 1] == '=')
						i++;
				 }		
			}
		}	
		System.out.println(sum);
	}
}

결과

0개의 댓글