[이것이 코딩 테스트다] 구현 - 왕실의 나이트

YEAh·2021년 3월 4일
0
post-thumbnail

구현
머릿속에 있는 알고리즘을 소스코드로 바꾸는 과정
완전 탐색 - 모든 경우의 수를 주저 없이 다 계산하는 해결 방법
시뮬레이션 - 문제에서 제시한 알고리즘을 한 단계씩 차례대로 직접 수행


✅ 문제

8 X 8 좌표 평면에서 나이트는 다음과 같은 2가지 경우로 이동할 수 있다.
1. 수평으로 두 칸 이동한 뒤에 수직으로 한 칸 이동하기
2. 수직으로 두 칸 이동한 뒤에 수평으로 한 칸 이동하기
나이트의 위치가 주어졌을 때 나이트가 이동할 수 있는 경우의 수를 출력하는 프로그램ㅇ을 작성하시오. 이 때 왕실의 정원에서 행 위치를 표현할 때는 1부터 8로 표현하면, 열 위치를 표현할 때는 a부터 h로 표현한다.

입력 예시

a1

출력 예시

2

➕ 문제 해설

input_data = input()

row = int(input_data[1])
# 문자를 숫자로 변경해서 사용
column = int(ord(input_data[0]) - ord('a')) + 1

# 튜플 ( ), 이동할 수 있는 모든 경우
steps = [(2, 1), (2, -1), (-2, 1), (-2, -1), (1, 2), (1, -2), (-1, 2), (-1, -2)]

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)

문자를 한 칸씩 증가시키는 것보다 숫자를 증가시키는 것이 편하기 때문에 문자를 숫자로 바꿔서 사용한다.
이동할 수 있는 경우를 미리 저장해 놓고 경우를 하나씩 보면서 이동할 수 있는 지 확인한다.

📝 정리

구현 문제가 너무 어렵다.. 상하좌우 문제도 그렇게 실행할 수 있는 모든 경우의 수를 저장해 놓고 하나씩 확인하면서 사용하는 방법을 기억해 놔야 겠다. 그리고 그 경우를 튜플로 사용해서 저장해 놓는 것이 좋다.

튜플 사용한 문제

profile
End up being.

0개의 댓글