import sys
input = sys.stdin.readline
now = input()
pos = [1,1]
pos[1] = int(now[1])
if now[0]=='a':
pos[0] = 1
elif now[0]=='b':
pos[0] = 2
elif now[0]=='c':
pos[0] = 3
elif now[0]=='d':
pos[0] = 4
elif now[0]=='e':
pos[0] = 5
elif now[0]=='f':
pos[0] = 6
elif now[0]=='g':
pos[0] = 7
else:
pos[0] = 8
# print(pos)
new_pos = [0,0]
cnt = 0
move= [[-1,-2],[1,-2],[-1,2],[1,2],[-2,-1],[-2,1],[2,-1],[2,1]]
for i in range(len(move)):
new_pos[0] = pos[0]+move[i][0]
new_pos[1] = pos[1]+move[i][1]
if 0<new_pos[0]<9 and 0<new_pos[1]<9:
cnt +=1
print(cnt)
그냥 막 생각나는대로 5분도 안돼서 짠 하드코딩...
하지만! 답안 코드와 크게 다르지 않았다.
알고리즘은 동일했고, 값을 처리하는 방식 한가지가 달랐다.
column을 받아올 때 ord를 이용해서 바로 문자를 숫자로 바꾸었다.
## ord 함수란?
- 하나의 문자를 인자로 받고 해당 문자에 해당하는 유니코드 정수를 반환한다.
- ord('a')를 넣으면 정수 97을 반환합니다.
input_data = input()
row = int(input_data[1])
## 1. ord로 문자 -> 숫자
column = int(ord(input_data[0]))-int(ord('a'))+1
## 2. 리스트를 이용하여 8가지 방향에 대한 벡터 정의
steps = [(-2,-1),(-1,-2),(1,-2),(2,-1),(2,1),(1,2),(-1,2),(-2,1)]
result =0
for step in steps:
next_row = row+step[0]
next_column = column + step[1]
if next_row>=1 and next_row<=8 and next_column >=1 and next_column<=8:
result += 1
print(result)'Algoritm' 카테고리의 다른 글
| [DFS&BFS] 개념 정리 (0) | 2023.03.07 |
|---|---|
| [Python]게임 개발 (0) | 2023.02.27 |
| [Python] 리스트 행렬 전환 (0) | 2023.02.03 |
| Greedy (0) | 2023.01.03 |
| [백준] 1991번 : 트리 순회 (python) (0) | 2022.10.01 |