[백준/BOJ]18787. Mad Scientist [Silver 5]

  1. Mad Scientist

문제출처 : https://www.acmicpc.net/problem/18787

code

#include <stdio.h>
#include <string.h>
int main()
{
	int N, tog = 0;
	char A[1000] = { NULL }, B[1000] = { NULL };
	scanf("%d", &N);
	scanf("%s", &A);
	scanf("%s", &B);
	int len = strlen(A);
	for (int i = 0; i < len; i++)
	{
		if (A[i] == 'G' && B[i] == 'H')
		{
			B[i] = 'G';
			if (A[i + 1] == B[i + 1] || A[i + 1] == '\0')
				tog++;
		}
		else if (A[i] == 'H' && B[i] == 'G')
		{
			B[i] = 'H';
			if (A[i + 1] == B[i + 1] || A[i + 1] == '\0')
				tog++;
		}
	}
	printf("%d", tog);
	return 0;
}

코드자체는 엄청 쉬운편이였다. Silver5가 맞을정도로 쉬웠다.

해석을 해보자면 존은 A배열로 소를 주문했는데 B로 왔다. 그래서 조카면서 매드사이언티스트인 Ben에게 부탁해서 소의 종을 바꿔서 A배열로 만들어 달라고 했다.

multi-cow-breed-flipinator 3000으로 소의 종을 G->H, H->G로 바꿀수 있는데, 배열안에서 한번에 한 문자열잘라 바꿀수 있다고 한다.

그래서 N, 배열A, 배열B 를 입력받고 문자열 길이만큼 반복하면서 A[i]와 B[i]가 다를때 바꾸고, A[i+1],B[i+1]이 같으면 문자열을 잘라서 바꿔야 하기때문에 토글 카운트를 ++해준다.

그래서 반복문을 다돌고 나오면 토글한 횟수가 구해진다.

좋은 웹페이지 즐겨찾기