반응형
왕실의 나이트 : 문제 설명
이 문제는 시뮬레이션, 완전탐색, 구현 문제라고 할 수 있다.
문제 해결 아이디어
- 요구사항대로 충실히 구현하면 됨.
- 나이트의 8가지 경로를 하나씩 확인하며 각 위치로 이동이 가능한지 확인해야함.
- 리스트를 이용하여 8가지 방향에 대한 방향 벡터를 정의!
정답
# 현재 나이트의 위치 입력받기
input_data = input()
row = int(input_data[1])
column = int(ord(input_data[0])) - int(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:
# 이동하고자 하는 위치 확인
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)
내 풀이
# 답 보고 다시 작성
input_data = input()
row = int(input_data[1])
column = ord(input_data[0]) - ord('a') + 1
steps = [(1, 2), (2, 1), (2, -1),(1, -2), (-1, -2), (-2, -1), (-1, 2), (-2, 1)]
count = 0
for step in steps:
x = row + step[0] # row 행
y = column + step[1] # column 열
count += 1
if x < 1 or y < 1 or x > 8 or y > 8:
count -= 1
print(count)
'''내 풀이
position = input()
x = [1, 2, 3, 4, 5, 6, 7, 8, 9] # 행
y = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'] # 열
'''
정답과 다른 부분에서 느낀 점
1. ord 앞에 int 없어도 됨
2. 나는 모든 연산에 대해서 count+하고 범위 이후는 count-를 수행함.
정답은 범위 안 연산에 대해서 count+ 수행. (동일한 결과)
3. 입력값이 g9(범위 밖)이면 정답도 내 풀이도 return값은 3이 나옴(둘다 틀림)
이코테 2021 시리즈 씹어먹기 by 조랭이떡
시리즈 목차
더보기
- 코딩테스트 출제 경향 및 알고리즘 성능 평가
- 파이썬 문법 부수기
- 그리디
- 구현
- DFS & BFS (추후링크)
- 정렬 알고리즘 (추후링크)
- 이진 탐색 (추후링크)
- 다이나믹 프로그래밍 (추후링크)
- 최단 경로 알고리즘 (추후링크)
- 기타 그래프 이론 (추후링크)
- 코딩 테스트에서 자주 출제되는 기타 알고리즘 (추후링크)
- 개발형 코딩 테스트 (추후링크)
반응형