아..! 감사합니다!
그런 문제가 발생하는군요..
1063번 - 킹
이렇게 했는데도 안되네요.. @chae10315
#include<stdio.h>
#include<string.h>
char king[3], stone[3];
void move(char *com)
{
if (!strcmp(com, "R"))
{
if (king[0] + 1 <= 'H')
{
if (stone[0] == king[0] + 1 && stone[1] == king[1])
{
if (stone[0] + 1 <= 'H')
{
king[0] = king[0] + 1;
stone[0] = stone[0] + 1;
}
}
else
{
king[0] = king[0] + 1;
}
}
}
else if (!strcmp(com, "L"))
{
if (king[0] - 1 >= 'A')
{
if (stone[0] == king[0] - 1 && stone[1] == king[1])
{
if (stone[0] - 1 >= 'A')
{
king[0] = king[0] - 1;
stone[0] = stone[0] - 1;
}
}
else
{
king[0] = king[0] - 1;
}
}
}
else if (!strcmp(com, "B"))
{
if (king[1] - 1 >= '1')
{
if (king[1] - 1 == stone[1] && king[0] == stone[0])
{
if (stone[1] - 1 >= '1')
{
king[1] = king[1] - 1;
stone[1] = stone[1] - 1;
}
}
else
{
king[1] = king[1] - 1;
}
}
}
else if (!strcmp(com, "T"))
{
if (king[1] + 1 <= '8')
{
if (king[1] + 1 == stone[1] && king[0] == stone[0])
{
if (stone[1] <= '8')
{
king[1] = king[1] + 1;
stone[1] = stone[1] + 1;
}
}
else
{
king[1] = king[1] + 1;
}
}
}
else if (!strcmp(com, "RT"))
{
if (king[0] + 1 <= 'H' && king[1] + 1 <= '8')
{
if (king[1] + 1 == stone[1] && king[0] + 1 == stone[0])
{
if (stone[0] + 1 <= 'H' && stone[1] + 1 <= '8')
{
king[1] = king[1] + 1;
king[0] = king[0] + 1;
stone[1] = stone[1] + 1;
stone[0] = stone[0] + 1;
}
}
else
{
king[1] = king[1] + 1;
king[0] = king[0] + 1;
}
}
}
else if (!strcmp(com, "LT"))
{
if (king[0] - 1 >= 'A' && king[1] + 1 <= '8')
{
if (king[0] - 1 == stone[0] && king[1] + 1 == stone[1])
{
if (stone[0] - 1 >= 'A' && stone[1] + 1 <= '8')
{
king[0] = king[0] - 1;
king[1] = king[1] + 1;
stone[0] = stone[0] - 1;
stone[1] = stone[1] + 1;
}
}
else
{
king[0] = king[0] - 1;
king[1] = king[1] + 1;
}
}
}
else if (!strcmp(com, "RB"))
{
if (king[0] + 1 <= 'H' && king[1] - 1 >= '1')
{
if (king[0] + 1 == stone[0] && king[1] - 1 == stone[1])
{
if (stone[0] + 1 <= 'H' && stone[1] - 1 >= '1')
{
king[0] = king[0] + 1;
king[1] = king[1] - 1;
stone[0] = stone[0] + 1;
stone[1] = stone[1] - 1;
}
}
else
{
king[0] = king[0] + 1;
king[1] = king[1] - 1;
}
}
}
else
{
if (king[0] - 1 >= 'A' && king[1] - 1 >= '1')
{
if (king[0] - 1 == stone[0] && king[1] - 1 == stone[1])
{
if (stone[0] - 1 >= 'A' && stone[1] - 1 >= '1')
{
king[0] = king[0] - 1;
king[1] = king[1] - 1;
stone[0] = stone[0] - 1;
stone[1] = stone[1] - 1;
}
}
else
{
king[0] = king[0] - 1;
king[1] = king[1] - 1;
}
}
}
}
int main(void)
{
int N;
scanf("%s %s %d", king, stone, &N);
for (int i = 0;i < N;i++)
{
char command[3];
scanf("%s", command);
move(command);
}
printf("%s\n%s\n", king, stone);
}
감사합니다.. 실수를 했었네요 정말정말 감사합니다!!
댓글을 작성하려면 로그인해야 합니다.
kdr06006 5년 전
어떤 반례가 있는지 모르겠어요..