[백준/BOJ]14788. Oversized Pancake Flipper (Small) [Silver 5]

jychan99·2021년 8월 25일
0
post-thumbnail
  1. Oversized Pancake Flipper (Small)

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

code

#include <stdio.h>
#include <string.h>
int main()
{
	int T, i, j, k, K, flag = 1, y = 0;
	scanf("%d", &T);
	for (i = 0; i < T; i++)
	{
		char S[11] = { 0 };
		scanf("%s", &S);
		scanf("%d", &K);
		int len = strlen(S);
		for (j = 0; j < len - K + 1; j++)
		{
			if (S[j] == '-')
			{
				for (k = 0; k < K; k++)
				{
					if (S[j + k] == '-')
						S[j + k] = '+';
					else if (S[j + k] == '+')
						S[j + k] = '-';
				}
				y++;
			}
		}
		for (j = 0; j < len; j++)
			if (S[j] == '-')
				flag = 0;
		if (flag == 1)
			printf("Case #%d: %d", i+1, y);
		else
			printf("Case #%d: IMPOSSIBLE", i+1);
		y = 0, K = 0, len = 0;
	}
	return 0;
}

백준에 제출하니까 100%까지되는데 틀렸다고 나온다.... 왜그렇게 나오는지는 모르겠다;;;

그냥 문자열입력받고, -만나면 +로 바꿔주는 작업하고 y도 ++해준다, 그렇게 문자열길이만큼 다돌았는데도, - 가 남아있으면 IMPOSSIBLE을 출력하고, 모두 +이면, 주어진 조건대로 출력해준다.

잘되는데 왜 틀렸다고 나올까........ ㅠㅠ


진짜 내가 돌대가리였다.. 하..... flag초기화를 i를 도는 for문에 포함을 시키지않았다....
C++로 다시 만들었고, 알고리즘은 동일하다.

#include <iostream>
using namespace std;

int main()
{
	ios::sync_with_stdio(false);

	int T, i, j, k, K, y = 0;
	cin >> T;
	for (i = 1; i <= T; i++)
	{
		int flag = 1;
		string S;
		cin >> S >> K;
		int len = S.length();
		
		for (j = 0; j <= len - K; j++)
		{
			if (S[j] == '-')
			{
				for (k = 0; k < K; k++)
				{
					if (S[j + k] == '-')
						S[j + k] = '+';
					else
						S[j + k] = '-';
				}
				y++;
			}
		}
		for (j = 0; j < len; j++)
			if (S[j] == '-')
				flag = 0;

		if (flag)
			cout << "Case #" << i << ": " << y << '\n';
		else
			cout << "Case #" << i << ": IMPOSSIBLE" << '\n';

		y = 0;
	}
	return 0;
}
profile
내가 지금 두려워 하고 있는 일이 바로 내가 지금 해야 할 일이다. 🐥

0개의 댓글