[COS PRO 1급] 1차 문제6) 체스의 나이트

아현·2023년 7월 25일
0

Algorithm

목록 보기
371/400

연습문제


체스의 나이트

체스에서 나이트(knight)는 아래 그림과 같이 동그라미로 표시된 8개의 방향중 한 곳으로 한 번에 이동이 가능합니다.

단, 나이트는 체스판 밖으로는 이동할 수 없습니다.
체스판의 각 칸의 위치는 다음과 같이 표기합니다.

예를 들어, A번줄과 1번줄이 겹치는 부분은 'A1'이라고 합니다.
나이트의 위치 pos가 매개변수로 주어질 때, 나이트를 한 번 움직여서 이동할 수 있는 칸은 몇개인지 return 하도록 solution 함수를 완성해주세요.

□ 매개변수 설명

나이트의 위치 pos가 solution 함수의 매개변수로 주어집니다.
pos는 A부터 H까지의 대문자 알파벳 하나와 1 이상 8이하의 정수 하나로 이루어진 두 글자 문자열입니다.
잘못된 위치가 주어지는 경우는 없습니다.

□ return 값 설명

나이트를 한 번 움직여서 이동할 수 있는 칸의 개수를 return 해주세요.



def in_range(x, y, n):
	return x >= 0 and x < n and y >= 0 and y < n
		
def solution(pos):
	
	answer = 0
	
	dx = [1, 1, 2, 2, -1, -1, -2, -2]
	dy = [2, -2, 1, -1, 2, -2, 1, -1]
	
	board = [[0 for _ in range(8)] for _ in range(8)]
	dict = {
		"A":0,
		"B":1,
		"C":2,
		"D":3,
		"E":4,
		"F":5,
		"G":6,
		"H":7
	}
	
	x = dict[pos[0:1]]
	y = int(pos[1:2]) - 1
	
	for i in range(8):
		nx = x + dx[i]
		ny = y + dy[i]
		if in_range(nx, ny, 8):
			answer += 1
	
	return answer
profile
For the sake of someone who studies computer science

0개의 댓글