왕실의 나이트
1 _ 문제
행복 왕국의 왕실 정원은 체스판과 같은 8 x 8 좌표 평면이다. 왕실 정원의 특정한 한 칸에 나이트가 서 있다. 나이트는 매우 충성스러운 신하로서 매일 무술을 연마한다.
나이트는 말을 타고 있기 때문에 이동을 할 때는 L자 형태로만 이동할 수 있으며 정원 밖으로는 나갈 수 없다. 나이트는 특정한 위치에서 다음과 같은 2가지 경우로 이동할 수 있다.
- 수평으로 두 칸 이동한 뒤에 수직으로 한 칸 이동하기
- 수직으로 두 칸 이동한 뒤에 수평으로 한 칸 이동하기
이처럼 8 x 8 좌표 평면상에서 나이트의 위치가 주어졌을 때 나이트가 이동할 수 있는 경우의 수를 출력하는 프로그램을 작성하시오. 이때 왕실의 정원에서 행 위치를 표현할 때는 1부터 8로 표현하며, 열 위치를 표현할 때는 a부터 h로 표현한다.
예를 들어 만약 나이트가 a1에 있을 때 이동할 수 있는 경우의 수는 다음 2가지이다. a1의 위치는 좌표 평면에서 구석의 위치에 해당하며 나이트는 정원의 밖으로는 나갈 수 없기 때문이다.
- 오른쪽으로 두 칸 이동 후 아래로 한 칸 이동하기 (c2)
- 아래로 두 칸 이동 후 오른쪽으로 한 칸 이동하기 (b3)
또 다른 예로 나이트가 c2에 위치해 있다면 나이트가 이동할 수 있는 경우의 수는 6가지이다. 이건 직접 계산해보시오.
- 입력 조건
- 첫째 줄에 8 x 8좌표 평면상에서 현재 나이트가 위치한 곳의 좌표를 나타내는 두 문자로 구성된 문자열이 입력된다. 입력 문자는 a1처럼 열과 행으로 이뤄진다.
- 출력 조건
- 첫째 줄에 나이트가 이동할 수 있는 경우의 수를 출력하시오.
- 입출력 예시
2 _ 문제 해결(고민) 과정
행이 1, 2, 7, 8 일 경우, 우선 4방향 중 하나의 수직 방향으로 갈 수 없다는 얘기.
열이 a, b, g, h 일 경우, 4방향 중 하나의 수평 방향으로 갈 수 없다는 얘기다.
모든 표본 공간은 8가지 이다.
위, 아래, 왼쪽, 오른쪽 방향으로 각각 2가지의 경우를 가지고 있다.
위에서 언급한 행 또는 열을 포함하고 있으면, 포함된 개수 만큼 8에서 2씩 빼면 될 것 같다.
3 _ 문제 알고리즘
1. 입력받은 열과 행을 각각 column 변수와 row 변수에 할당한다.
2. 표본 공간인 count = 8 할당
3. 열과 행에 1, 2, 7, 8 중 하나라도 포함 되면 2씩 빼기
4. count 값 출력
4 _ MY CODE
- 코드
input_data = input()
row = int(input_data[1])
column = int(ord(input_data[0])) - int(ord('a')) + 1
count = 8
if row == 1 or row == 2 or row == 7 or row == 8:
count -= 2
if column == 1 or column == 2 or column == 7 or column == 8:
count -= 2
print(count)
- 실행 결과
5 _ 교재 답안 코드
- 답안
input_data = input()
row = int(input_data[1])
column = int(ord(input_data[0])) - int(ord('a')) + 1
steps = [(-2, -1), (-1, -2), (1, -2), (2, -1), (2, 1), (1, 2), (-1, 2), (-2, 1)]
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)
6 _ 마치며
특정 행과 열이 포함 되는 경우를 제외 시킬 때
범위로 쓸걸,,,,,,
부등식으로 풀걸,,,,,,,,,,
오 늘 도 하 나 배 웠 다 ~!~!~!~!~~~~
위 내용은 저자 나동빈의 < 이것이 취업을 위한 코딩 테스트다 with 파이썬 > 을 읽고, 공부한 내용입니다.
https://book.naver.com/bookdb/book_detail.nhn?bid=16439154
'CS > Coding Test' 카테고리의 다른 글
[ 스터디 ] 그리디 + 구현 실전 모의 코딩 테스트 (0) | 2022.02.10 |
---|---|
[ 이것이 취업을 위한 코딩 테스트다 with 파이썬 ] Chapter 04 구현 - 실전문제: 게임 개발 (0) | 2022.02.09 |
[ 이것이 취업을 위한 코딩 테스트다 with 파이썬 ] Chapter 04 구현 - 이론과 예제 (0) | 2022.02.09 |
[ 이것이 취업을 위한 코딩 테스트다 with 파이썬 ] Chapter 03 그리디 - 실전문제: 1이 될 때까지 (0) | 2022.02.09 |
[ 이것이 취업을 위한 코딩 테스트다 with 파이썬 ] Chapter 03 그리디 - 실전문제: 숫자 카드 게임 (0) | 2022.02.09 |