반응형
해당 포스팅의 문제의 출처는 나동빈님의 이것이 취업을 위한 코딩 테스트 교재를 공부하면서 풀이할 때 본인의 사고 과정 흐름과 문제 풀이를 기록하기 위함 입니다.

문제설명
왕실 정원은 8 by 8 좌표 평면이다. 왕실의 나이트는 다음과 같이 L자 형태로 움직일 수 있다.
- 수평으로 두 칸 이동한 뒤에 수직으로 한 칸 이동하기
- 수직으로 두 칸 이동한 뒤에 수평으로 한 칸 이동하기
좌표평면의 가로, 세로는 다음과 같으며 나이트의 초기 위치가 가로, 세로 문자열을 합쳐서 주어진다. 예를 들어, a1로 주어진다면 가장 왼쪽의 위 좌표를 의미한다.

입력조건
- 첫째 줄에 8 by 8 좌표 평면상에서 현재 나이트가 위치한 곳의 좌표를 나타내는 두 문자로 구성된 문자열이 입력된다. 입력 문자는 a1처럼 열과 행으로 이뤄진다.
출력조건
- 첫째 줄에 나이트가 이동할 수 있는 경우의 수를 출력하시오
사고과정
- 저번에 풀어보았던 상하좌우 문제랑 비슷하다. 이번엔 8 by 8 좌표평면 2차원 배열을 굳이 만들지 않고 잘 해결함
- 은근 시간이 걸렸던 점은 문자열로 주어지는 좌표 위치를 숫자로 바꾸는 데 은근 걸림.. Python 내장 유니코드 문자열을 숫자로 바꾸어주는 ord 메소드를 적절히 사용
풀이
1. 나의 풀이
책의 풀이와는 입력되는 열 문자열에 대해 ord 메소드를 사용하는 방식만 다름. 책의 풀이가 더 직관적인 듯 함..
location = input()
# 내 풀이
# x, y = int(location[1]), ord(location[0]) - 96
# 책 풀이
x = int(location[1])
y = ord(location[0]) - ord('a') + 1
count = 0
directions = [(1, 2), (1, -2), (-1, 2), (-1, -2),
(2, 1), (2, -1), (-2, 1), (-2, -1)]
for d in directions:
nx = x + d[0]
ny = y + d[1]
if nx < 1 or nx > 8 or ny < 1 or ny > 8:
continue
else:
count += 1
print(count)
반응형
'알고리즘 삽질장' 카테고리의 다른 글
[이코테] DFS - 음료수 얼려 먹기 (0) | 2021.09.07 |
---|---|
[이코테] 구현 - 게임 개발 (0) | 2021.09.07 |
[이코테] 구현 - 시각 (0) | 2021.09.06 |
[이코테] 구현 - 상하좌우 (0) | 2021.09.06 |
[이코테] 그리디 - 1이 될 때까지 (0) | 2021.09.06 |