유형
일련의 명령에 따라서 개체를 차례대로 이동시킨다는 점에서 '구현-시뮬레이션' 알고리즘
코드
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 |