만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

일반화된 나이트

면접 대비

시간 제한1초메모리 제한1024 MB

요약
일반화한 (a,b)-나이트와 시작 칸이 주어질 때, 한 번에 이동할 수 있는 모든 칸을 열, 행 순으로 정렬해 출력한다.
난이도

쉬움10점 중 3점

유형
시뮬레이션, 구현, 배열, 정렬
정답자
아직 제출이 없습니다

문제

체스를 모르는 사람을 위해 설명하면, 체스는 8×88 \times 8개의 칸으로 이루어진 격자에서 두는 보드 게임이다. 행은 아래에서 위로 11부터 88까지 번호가 붙고, 열은 알파벳 소문자 aa부터 hh까지로 나타낸다. 칸의 이름은 열 다음에 행을 붙여 쓴다. 예를 들어 a1a1과 e5e5는 올바른 칸 이름이다.

체스에서 기물이 어떤 칸을 위협한다는 것은 그 기물이 한 번의 이동으로 그 칸에 갈 수 있다는 뜻이다. 나이트는 다른 기물과 다르게 움직이기 때문에 가장 무서운 기물 중 하나다. 나이트는 한 번에 두 행과 한 열, 또는 한 행과 두 열을 움직일 수 있다. 아래 그림은 표준 체스 나이트가 e5e5 칸에서 출발할 때 위협하는 칸을 보여준다.

표준 체스 나이트는 (2,1)(2, 1)-나이트다. 더 일반화된 버전은 (a,b)(a, b)-나이트로, 한 번의 이동으로 aa행과 bb열을 움직이거나 bb행과 aa열을 움직일 수 있다. 체스판의 시민들은 이 새로운 나이트가 얼마나 강력한지 몰라 걱정하고 있다. (a,b)(a, b)-나이트와 출발 칸이 주어질 때, 이 나이트는 어떤 칸을 위협하는가?

입력

입력은 두 줄로 이루어진다. 첫째 줄에는 나이트의 성질을 나타내는 두 정수 aa와 bb가 공백으로 구분되어 주어진다. 0≤a,b<80 \leq a, b < 8이고 max⁡(a,b)>0\max(a, b) > 0임이 보장된다. 둘째 줄에는 (a,b)(a, b)-나이트의 출발 위치가 위에서 설명한 표준 체스 표기법으로 주어진다.

출력

먼저 나이트가 도달할 수 있는 칸의 수 kk를 출력한다. 둘째 줄에는 정확히 한 번의 이동으로 갈 수 있는 위치 kk개를 공백으로 구분하여 출력한다. 이 위치들은 열이 증가하는 순서로 정렬하고, 열이 같으면 행이 증가하는 순서로 정렬한다.

예제2

  1. 예제 1

    입력
    4 5
    a1
    
    예상 출력
    2
    e6 f5
    
  2. 예제 2

    입력
    2 1
    e5
    
    예상 출력
    8
    c4 c6 d3 d7 f3 f7 g4 g6