[코테 공부] 구현 Implementation_3

Yujin Lee·2021년 3월 23일
0

CodingTest_Study

목록 보기
6/7
post-thumbnail

머리속 알고리즘을 소스코드로 바꿔라!



실전 문제

나이트는 말을 타고 있기 때문에 이동을 할 때는 L자 형태로만 이동할 수 있으며 정원 밖으로는 나갈 수 없다.

  • 나이트는 특정한 위치에서 다음과 같은 2가지 경우로 이동할 수 있다.
    • 수평으로 두 칸 이동 후 수직으로 한 칸 이동
    • 수직으로 두 칸 이동 후 수평으로 한 칸 이동

행 위치는 1~8로, 열 위치는 a~h로 표현한다.

  • 입력 조건 : 첫째 줄에 8 x 8 좌표 평면상에서 현재 나이트가 위치한 곳의 좌표를 나타내는 두 문자로 구성된 문자열이 입력된다. 입력 문자는 a1처럼 열과 행으로 이뤄진다.
  • 출력 조건 : 첫째 줄에 나이트가 이동할 수 있는 경우의 수를 출력하시오
입력 예시 :
a1
출력 예시 :
2


문제 풀이

# 왕실의 나이트
input_data = input() # 시작 위치 입력

row = int(input_data[1])
column = int(ord(input_data[0])) - int(ord('a')) + 1
# ord : 문자의 아스키 코드 값을 돌려주는 함수

# 일단 나이트가 이동할 수 있는 8가지 방법을 정리하자
steps = [(-1,2), (-2,1), (-2,-1), (-1,-2), (1,-2), (2,-1), (2,1), (1,2)]

# 시작 위치에 따라 각 위치로 이동이 가능한지 확인
result = 0 # 가능하면 카운트할 것
for step in steps:
    # 입력했던 row column에다가  8가지의 +-계산을 해본다.
    next_row = row + step[0]
    next_column = column + step[1]
    # 이동이 가능하면(즉, 숫자가 좌표 평면상에 위치하면) 카운트 증가
    if next_row >= 1 and next_column <= 8 and next_column >= 1 and next_column <= 8:
        result += 1

print(result)
profile
I can be your Genie🧞‍♀️ How ‘bout Aladdin? 🧞‍♂️

0개의 댓글

관련 채용 정보