본문 바로가기
개발/코딩테스트

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

by seopport 2023. 1. 21.
728x90
반응형

* 해당 문제 및 해설은 "이것이 코딩 테스트 다 with 파이썬" 책을 기준으로 요약 및 정리 하여 작성하였습니다.  

 

http://www.yes24.com/product/goods/91433923

 

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

나동빈 저자의 유튜브 라이브 방송 https://www.youtube.com/c/dongbinnaIT 취준생이라면 누구나 입사하고 싶은 카카오 · 삼성전자 · 네이버 · 라인!취업의 성공 열쇠는 알고리즘 인터뷰에 있다!IT 취준생

www.yes24.com


아이디어를 코드로 바꾸는 구현

구현 이란 '머릿속에 있는 알고리즘을 소스코드로 바꾸는 과정' 이다. 
구현 문제 유형은 모든 범위의 코딩 테스트 문제 유형을 포함하는 개념이다.

 

문제 설명 : 구현 - 왕실의 나이트

행복 왕국의 왕실 정원은 체스판과 같은 8 x 8 좌표 평면이다.
나이트는 말을 타고 있기 때문에 이동을 할 때는 L 자 형태로만 이동할 수 있으며, 정원 밖으로는 나갈 수 없다.

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

아래 사진과 같이 체스판이 있다고 가정해보자.
행 위치를 표현할 때는 1 부터 8로 표현하며, 열 위치를 표현할 때는 a 부터 h 로 표현한다.

만약 시작하는 곳이 a1 이라면, 갈 수 있는 곳은 b3, c2 가 있다. (나머지는 영역 외)
1. 오른쪽으로 두칸 이동 후 아래로 한 칸 이동하기(c2)
2. 아래로 두 칸 이동 후 오른쪽으로 한 칸 이동하기(b3)
a1 b1 c1 d1 e1 f1 g1 h1
a2 b2 c2 d2 e2 f2 g2 h2
a3 b3 c3 d3 e3 f3 g3 h3
a4 b4 c4 d4 e4 f4 g4 h4
a5 b5 c5 d5 e5 f5 g5 h5
a6 b6 c6 d6 e6 f6 g6 h6
a7 b7 c7 d7 e7 f7 g7 h7
a8 b8 c8 d8 e8 f8 g8 h8

 

입력 조건

  • 첫째 줄에 8 x 8 좌표 평면상에서 현재 나이트가 위치한 곳의 좌표를 나타내는 두 문자로 구성된 문자열이 입력된다. 입력 문자는 a1 처럼 열과 행으로 이뤄진다.

출력 조건

  • 첫째 줄에 나이트가 이동할 수 있는 경우의 수를 출력하시오.

 

예시

입력 예시 출력 예시
a1 2

 

답변 및 해설

# input_data 받기

input_data = input()

x = int(input_data[1])
y = int(ord(input_data[0]) - 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:
  dx = x + step[0]
  dy = y + step[1]

  if(dx >= 1 and dx <= 8 and dy >= 1 and dy <= 8):
    result += 1


print(result)

 

개인적인 생각

이전 블로그에서 작성했던 것 처럼 상하좌우 문제와 거의 비슷하다.
어렵지 않게 풀 수 있었을 것이라 생각한다.

X, Y 축이 살짝 헷갈렸지만, 풀만 했다.

 

오늘의 개발자 명언

나는 드디어 상위호환성 Upward Compatible이 의미하는 바를 깨달았다.
그것은 옛날에 만든 실수까지 그대로 유지해야 한다는 뜻이다. 제길.
(Dennie van Tassel, 컴퓨터 과학자, ‘프로그래밍 언어의 역사’를 저술했다.)

출처 : 프로그래밍에 관한 명언 101가지
728x90
반응형