컴공생의 다이어리

왕실의 나이트 본문

Development/Algorithm & Coding Test

왕실의 나이트

컴공 K 2020. 12. 21. 00:55

행복왕국의 왕실정원은 체스판과 같은 8 * 8좌표 평면이다. 왕실 정원의 특저안 한 칸에 나이트가 서있다. 나이트는 매우 충성스러운 신하로서 매일 무술을 연마한다. 나이트는 말을 타고 있기 때문에 이동을 할때는 L자 형태로만 이동할 수 있으며 정원 밖으로는 나갈 수 없다. 나이트는 특정한 위취에서 다음과 같은 2가지 경우로 이동할 수 있다. 

  1. 수평으로 두 칸 이동한 뒤에 수직으로 한 칸 이동하기
  2. 수직으로 두 칸 이동한 뒤에 수평으로 한 칸 이동하기

 

질문
이처럼 8 * 8 좌표 평면상에서 나이트의 위치가 주어졌을 때 나이트가 이동할 수 있는 경우의 수를 출력하는 프로그램을 작성하시오.

 

 

코드로 구현

아래는 파이썬으로 구현한 코드이다.

cur=input()
row=int(cur[1])
column=int(ord(cur[0]))-int(ord('a'))+1

step=[(-2,-1),(-2,1),(2,-1),(2,1),(-1,-2),(-1,2),(1,-2),(1,2)]

result=0
for s in step:
    next_r=row+s[0]
    next_c=column+s[1]
    if next_r>=1 and next_r<=8 and next_c>=1 and next_c<=8:
        result+=1

print(result)

 

아래는 c/c++으로 구현한 코드이다.

#include<iostream>
#include<string>

int main() {
	int result = 0;
	int px[] = { -2, -1, 1, 2, 2, 1, -1, -2 };
	int py[] = { -1, -2, -2, -1, 1, 2, 2, 1 };
	std::string input;
	std::cin >> input;
	
	int row = input[1] - '0';
	int column = input[0] - 'a' + 1;

	for (int i = 0; i < 8; i++) {
		int nextRow = row + px[i];
		int nextColumn = column + py[i];
		if (nextRow >= 1 && nextRow <= 8 && nextColumn >= 1 && nextColumn <= 8)
			result += 1;
	}
	std::cout <<result;
	return 0;
}

 

 

 

www.kyobobook.co.kr/product/detailViewKor.laf?mallGb=KOR&ejkGb=KOR&barcode=9791162243077

 

이것이 취업을 위한 코딩 테스트다 with 파이썬 - 교보문고

IT 취준생이라면 누구나 가고 싶어 하는 카카오, 라인, 삼성전자의 2016년부터 2020년까지의 코딩 테스트와 알고리즘 대회의 기출문제를 엄선하여 수록하였다. 최근 5년간의 코딩 테스트 기출문제

www.kyobobook.co.kr

 

728x90
반응형

'Development > Algorithm & Coding Test' 카테고리의 다른 글

완전수, 부족수, 과잉수, 정사각수란?  (0) 2021.03.24
게임 개발  (0) 2020.12.21
시각  (0) 2020.12.21
상하좌우  (0) 2020.12.21
[프로그래머스] Greedy - 체육복  (0) 2020.12.18
Comments