코딩 기록소
article thumbnail
반응형

문제

  • 행복 왕구의 왕실 정원은 체스판과 같은 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. 그리디 & 구현을 참고합니다.

 

반응형
profile

코딩 기록소

@seungyong20

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!