본문 바로가기

Algoritm

[Python] 왕실의 나이트

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