-- 예전 기록/BOJ

[ BOJ ] 25595 : 86 ─에이티식스─ 2 ( BRONZE 1 ) / Python

rejo 2024. 2. 17. 14:22

기아데 연방 공화국은 '레기온'이라는 인공지능 무인 병기들과 전쟁 중이다. 공화국은 레기온에 대항할 수단으로 '레긴레이브'라는 보행 병기를 개발했다. 공화국 군인들 중 소수정예는 이 레긴레이브에 탑승해서 레기온에 맞서 싸운다.

신에이 노우젠은 제 86 전략기동전단 기갑전대의 전대장이자 근접전의 대가이다. 그는 레기온들의 위치를 전부 파악할 수 있는 이능력이 있다. 그의 전투 스타일은 직접 레기온이 있는 위치 근처로 가서 빠르게 해치우는 것이다. 레긴레이브는 화력이 다소 떨어지지만, 기동성이 뛰어나다는 장점이 있기 때문이다.

레긴레이브는 대각선 네 방향으로 이동할 수 있다. 현재 좌표가  라면 (r−1, c−1), (r−1, c+1), (r+1, c−1), (r+1, c+1)로 움직일 수 있다. 그리고 대각선으로 이동할 때 이동 경로에 인접한 레기온을 최대 2기까지 해치울 수 있다. 각각의 이동 경우마다 해치울 수 있는 레기온 위치는 다음과 같다.

이동하려는 위치에 레기온이 있어도 겹쳐서 있을 수 있다. 다만, 겹친 위치에 있는 레기온은 해치울 수 없다.

기습받은 레기온들은 당황하여 모두 움직임을 멈춘 상태다. 레기온들의 위치가 주어졌을 때, 신에이 노우젠이 레기온을 모두 해치우는 게 가능한지 판단해보자.

신에이 노우젠은 전장을 벗어나 이동할 수는 없다.

입력

첫 번째 줄에 전장의 크기 이 주어진다. 전장은 N × N 크기 좌표로 이루어져 있다. 다음 개의 줄에는 전장의 정보가 주어진다. 각 줄마다 개의 좌표 정보가 주어지며 0은 빈칸, 1은 레기온, 2는 신에이 노우젠의 현재 위치를 나타낸다.

  •  1 ≤ N ≤ 100
  •  0 ≤ 레기온 개수 ≤ N^2 − 1
  • 신에이 노우젠의 위치는 유일하다.

출력

전장에 레기온이 없거나 모든 레기온을 해치울 수 있다면 첫 줄에 "Lena"를 출력하고, 아니라면 "Kiriya"를 출력한다.

풀이 과정

체스에서 비숍이 다른 대각선상에 있는 비숍을 잡을 수 없는 것처럼, 신에이 노우젠은 같은 대각선상에 있는 레기온을 잡을 수 없다. 레기온이 같은 대각선상에 하나라도 있다면 Kiriya를 출력한다.

import sys
input = sys.stdin.readline

n = int(input().rstrip())
arr = [list(map(int, input().rstrip().split())) for _ in range(n)]

odd = 0
even = 0
now = 0

for i in range(n):
    for j in range(n):
        if arr[i][j] == 1:
            if (i+j) % 2 == 1: odd += 1
            else: even += 1
        elif arr[i][j] == 2:
            now = (i+j) % 2

if (even == 0 and now == 0) or (odd == 0 and now == 1): print('Lena')
else: print('Kiriya')