[이코테] 4. 구현 - 왕실의 나이트
Algorithm/이코테2021

[이코테] 4. 구현 - 왕실의 나이트

반응형

 

 

왕실의 나이트 : 문제 설명


이 문제는 시뮬레이션, 완전탐색, 구현 문제라고 할 수 있다.

 

 

 

 

문제 해결 아이디어


  • 요구사항대로 충실히 구현하면 됨.
  • 나이트의 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 조랭이떡

시리즈 목차

더보기
  1. 코딩테스트 출제 경향 및 알고리즘 성능 평가
  2. 파이썬 문법 부수기
    1. 수, 리스트 자료형
    2. 문자열, 튜플, 사전, 집합 자료형
    3. 기본 입출력
    4. 조건문
    5. 반복문
    6. 함수와 람다 표현식
    7. 자주 사용되는 표준 라이브러리
  3. 그리디
    1. 그리디 알고리즘이란?
    2. 거스름돈
    3. 1이 될 때 까지
    4. 곱하기 혹은 더하기
    5. 모험가 길드
  4. 구현
  5. DFS & BFS (추후링크)
  6. 정렬 알고리즘 (추후링크)
  7. 이진 탐색 (추후링크)
  8. 다이나믹 프로그래밍 (추후링크)
  9. 최단 경로 알고리즘 (추후링크)
  10. 기타 그래프 이론 (추후링크)
  11. 코딩 테스트에서 자주 출제되는 기타 알고리즘 (추후링크)
  12. 개발형 코딩 테스트 (추후링크)

 

반응형