프로그래밍

백준 14405 피카츄

제가했어요 2021. 2. 5. 18:16

실버 5짜리 문제라 만만하게 봤다가 큰 코 다쳤당.

 

....... 무수한 틀렸습니다

 

#include <stdio.h>
#include <string.h>

char str[10000];

int main() {

	scanf("%s", str);

	int flag = 0;
	int len = strlen(str);
	if (len == 1) {
		flag = 1;
	}
	else {
		for (int i = 0; i < len; i++) {

			if (str[i] == 'p') {
				if (str[i + 1] != 'i') {
					flag = 1;
					break;
				}
				i += 1;
			}
			else if (str[i] == 'k') {
				if (str[i + 1] != 'a') {
					flag = 1;
					break;
				}
				i += 1;
			}
			else if (str[i] == 'c') {
				if ((i + 2) >= len || !(str[i + 1] == 'h' && str[i + 2] == 'u')) {
					flag = 1;
					break;
				}
				i += 2;
			}
			else {
				flag = 1;
				break;
			}
		}
	}	

	if (flag == 1) {
		printf("NO");
	}
	else {
		printf("YES");
	}

	return 0;
}

1. 항상 이런 문제 즉, 문자열 내에서 문자열을 찾는 문제에서는 배열인덱스를 범어나지 않는지 유의 해야한다.

 

2. 소스코드에 수정이 가해졌으면, 최대한 많이 그 영향범위를 파악해라.