본문 바로가기

Algorithm/Implementation

왕실의 나이트

 

유형

일련의 명령에 따라서 개체를 차례대로 이동시킨다는 점에서 '구현-시뮬레이션' 알고리즘

 

 

코드

pos = "a1"
column = int(ord(pos[0]) - int(ord('a'))) + 1
row = int(pos[1])

# Solution1
a = [-2, 2]
b = [-1, 1]
count = 0
for i in range(2):
    for j in range(2):
        x_pos = column + a[i]
        y_pos = row + b[j]
        if 1 <= x_pos <= 8 and 1 <= y_pos <= 8:
            count += 1

for i in range(2):
    for j in range(2):
        x_pos = column + b[i]
        y_pos = row + a[j]
        if 1 <= x_pos <= 8 and 1 <= y_pos <= 8:
            count += 1
print(count)


# Soliution2
steps = [[-2, -1], [-2, 1], [2, -1], [2, 1], [1, 2], [1, -2], [-1, 2], [-1, -2]]
count = 0

for step in steps:
    x_pos = column + step[0]
    y_pos = row + step[1]
    if 1 <= x_pos <= 8 and 1 <= y_pos <= 8:
            count += 1
print(count)

 

 

솔루션2가 훨씬 깔끔하다. 상하좌우 방식에서는 솔루션1과 같은 형태를 사용했는데 상하좌우가 아닌 다른 유형의 이동은 앞으로 저렇게 하는 것이 좋을 듯 싶다.

 

또한 문자를 인덱스로 변환시 column = int( ord('문자') - int(ord('a')) ) 가 엄청 유용한것 같다.

사용시 형태가 헷갈리므로 주의하자.

 

 

 

 

'Algorithm > Implementation' 카테고리의 다른 글

럭키 스트레이트  (0) 2023.04.09
게임 개발  (0) 2023.04.09
시각  (0) 2023.04.08
상하좌우  (1) 2023.04.08
Implementation - Concept  (0) 2023.04.08