kdr06006   5년 전

어떤 반례가 있는지 모르겠어요..

kdr06006   5년 전

@chae10315

아..! 감사합니다!

그런 문제가 발생하는군요..


kdr06006   5년 전

이렇게 했는데도 안되네요.. @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년 전

@chae10315

감사합니다.. 실수를 했었네요 정말정말 감사합니다!!

댓글을 작성하려면 로그인해야 합니다.