반응형
문제
- 행복 왕구의 왕실 정원은 체스판과 같은 8 x 8 좌표 평면입니다. 왕실 정원의 특정한 한 칸에 나이트가 서 있습니다.
- 나이트는 말을 타고 있기 때문에 이동을 할 때는 L자 형태로만 이동할 수 있으며 정원 밖으로는 나갈 수 없습니다.
- 나이트는 특정 위치에서 다음과 같은 2가지 경우로 이동할 수 있습니다.
- 수평으로 두 칸 이동한 뒤에 수직으로 한 칸 이동하기
- 수직으로 두 칸 이동한 뒤에 수평으로 한 칸 이동하기
- c2에 있을 떄 이동할 수 있는 경우의 수는 6가지입니다.
- a1에 있을 떄 이동할 수 있는 경우의 수는 2가지입니다.
입력
a1
출력
2
내가 제출한 풀이 - 구현실패 (방향 벡터 선언된 걸 보고 풀음)
방향 벡터를 사용하는 것은 알고 있었으나, 2차원 배열에서 한 리스트당 동 서 남 북으로 선언하여 모든 경우의 수를 따지려다가 구현을 하지 못함.
정답
import sys
pos_list = list(sys.stdin.readline().strip())
'''
pos_list = ['a', '1']
a는 아스키 코드로 96번이므로, 이러한 코드도 가능하다.
col = (int(ord(pos_list[0])) - int(pos_list('a'))) + 1
col = 96 - 96 + 1
'''
col, row = ord(pos[0]) - 96, int(pos[1])
result = 0
# 동남, 동북, 서남, 서북, 남동, 남서, 북동, 북서
vt_list = [(2, 1), (2, -1), (-2, 1), (-2, -1), (1, 2), (-1, 2), (1, -2), (-1, -2)]
for item in vt_list:
nx = col + item[0]
ny = row + item[1]
if nx > 8 or nx < 1 or ny > 8 or ny < 1:
continue
result += 1
print(result)
Tip
저번 벡터는 동, 서, 남, 북 방향 벡터와 이동방향 리스트를 사용한 풀이였다면 이번에는 (동 or 서, 남 or 북)으로 이루어진 2차원 리스트에 원소로 들어간 튜플로 이루어져 있었다. 아직 응용 문제가 익숙하지 않아 튜플 선언문을 보고 풀었지만 다음에는 좀 더 생각해서 풀어야할 것 같다.
References
본 그리디 알고리즘 문제 예제 및 개념은 나동빈 (이코테 2021 강의 몰아보기) 2. 그리디 & 구현을 참고합니다.
반응형
'Python 알고리즘' 카테고리의 다른 글
[Python 알고리즘] 백준 11047번 : 동전 0 (0) | 2022.01.31 |
---|---|
[Python] 구현 및 시뮬레이션 알고리즘을 파헤쳐 보자! (문자열 재정렬) (0) | 2022.01.28 |
[Python] 구현 및 시뮬레이션 알고리즘을 파헤쳐 보자! (시각) (0) | 2022.01.26 |
[Python] 구현 및 시뮬레이션 알고리즘을 파헤쳐 보자! (상하좌우) (0) | 2022.01.26 |
[Python] 그리디 알고리즘을 파헤쳐 보자! (모험가 길드) (0) | 2022.01.25 |