티스토리 뷰

코딩테스트

왕실의 나이트

ajaa 2024. 10. 6. 11:21

📌문제

예제 4-3 왕실의 나이트

8 x 8 체스판에 나이트가 서 있다. 나이트는 이동을 할 때 L자 형태로만 이동할 수 있으며 체스판 밖으로는 나갈 수 없다.

1. 수평으로 두 칸 이동한 뒤에 수직으로 한 칸 이동하기

2. 수직으로 두 칸 이동한 뒤에 수평으로 한 칸 이동하기

8 x 8 좌표 평면상에서 나이트의 위치가 주어졌을 때 나이트가 이동할 수 있는 경우의 수를 출력하는 프로그램을 작성하시오.

이때 좌표의 행 위치를 표현할 때는 1~8로 표현하고, 열 위치를 표현할 때는 a~h로 표현한다.

 

📌풀이

나이트의 이동 경로를 steps 변수에 넣는다면

steps=[(-2, -1), (-1, -2), (1, -2), (2, -1), (2, 1), (1, 2), (-1, 2), (-2, 1)]

 

나이트의 현재 위치가 주어지면 현재 위치에서 이동 경로를 더한 후, 8 x 8 좌표 안에 있는지 확인

 

📌코드

input_data = input()
row = int(input_data[1])
column = int(ord(input_data[0])) - int(ord("a")) + 1

# 나이트가 이동할 수 있는 8가지 방향 정의
steps = [(-2, -1), (-1, -2), (1, -2), (2, -1), (2, 1), (1, 2), (-1, 2), (-2, 1)]

# 8가지 방향에 대해 각 위치로 이동 가능한지 확인
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)

 

ord 함수: 하나의 문자를 인자로 받고 해당 문자에 해당하는 유니코드 정수를 반환

ord('a')를 넣으면 정수 97을 반환

 

📌참고

https://g.co/kgs/eyd5SSd

 

이것이 취업을 위한 코딩 테스트다 with 파이썬

IT 취준생이라면 누구나 입사하고 싶은 카카오・삼성전자・네이버・라인!취업의 성공 열쇠는 알고리즘 인터뷰에 있다! IT 취준생이라면 누구나 가고 싶어 하는 카카오, 라인, 삼성전자의 2016년

www.google.com

 

 

 

 

 

'코딩테스트' 카테고리의 다른 글

꼭 필요한 자료구조 기초 - 스택, 큐  (10) 2024.10.08
게임 개발  (6) 2024.10.07
시각  (2) 2024.10.05
Chapter 4. 구현, 상하좌우 문제  (2) 2024.10.04
숫자 카드 게임, 1이 될 때까지  (4) 2024.10.02
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함