PC/UVa ID : 110107/10196

개요

체스판에서 킹이 상대방의 수에 의해서 잡힐 수 있다면, 체크 상태를 알려 주는 일을 하는 것이다. 체스를 할 줄 모르면 뭐, 체스 룰부터 아는게 좋다. 나같은 경우 장기 룰을 알고 있기 때문에 장기와 빗대서 말하겠다.

폰(p) : 한번에 앞으로 한칸 씩 앞으로 갈 수 있으나, 상대 패를 먹을 때는 앞쪽 대각선 1칸 범위에서만 막을 수 있다. 마지막 폰은 뒤로 갈 수 없으며, 뒤로 가서 먹을 수도 없다.

나이트(n) : 장기의 馬 같은 움직임을 가진 녀석인데, 주변 장애물에 상관없이 공격 할 수 있다.

비숍(b) : 대각선 방향으로 거리 제약 없이 이동하면서 상대 패를 먹을 수 있다.

록(r) : 장기의 車 와 같은 움직임을 가진 녀석이다.

퀸(q) : 비숍과 록의 움직임을 다 가지고 있다.

킹(k) : 장기의 王과 같은 움직임을 가지고 있으나, 활동 범위는 넓다.

유의사항
폰의 움직임이 앞쪽만 움직일 수 있는데, 체스의 경우, 흰패와 검은패가 있다. 검은패는 위쪽에서 시작하여, 아래쪽으로 움직이는 방향이다. 즉, ↓, 흰패의 경우 검은패와 반대 방향을 가지고 있다.

보다 자세히 알고 싶다면 다음 링크를 봐라.

http://ko.wikipedia.org/wiki/%EC%B2%B4%EC%8A%A4

입력

위의 링크의 사진을 보면 알 수 있듯이 가로(8) X 세로(8) 을 가지고 있다. 패가 없는 자리는 "." 으로 표현하고, 패가 있는 자리는 위에서 말한 p, n, b, r, q, k 로 표현하고, 검은패가 소문자, 흰 패가 대문자이다.


출력

각 판의 배치에 따라, 체크를 당하는 쪽의 색을 기준으로 간단한 문구를 말하면 된다.
예)
white king is in check.
black king is in check.
no king is in check.

등..
문제를 보다 자세히 보려면, http://online-judge.uva.es/p/v101/10196.html 참고 하길 바란다.

생각해 봐야 할 주제
1. 흰/검은 색에 따른 폰의 움직임
2. 장애물이 있을 경우, 각 패의 움직임, 나이트는 생각할 필요가 없음

문제 푸는 중~ 이런게 바로 재미있는거~

코드

  1. 입력은 그냥 배열 입력으로 처리 했다.
  2. 방향성이란 개념을 넣었고, 폰의 경우 방향성을 거꾸로 만들어 사용 했음
  3. 폰의 이동만을 위한 수가 있고, 공격 할 수 있는 수가 따로 있어서, 기물의 이동시 "이동(M), 공격(A)" 속성을 넣어주어, 이동과 공격을 처리 할 수 있게 했다.


  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 라이프코리아트위터 공유하기
  • shared
  • 카카오스토리 공유하기