[백준 - 구현] 1063번 킹

minjyo·2020년 10월 23일
0

알고리즘 풀이

목록 보기
2/7

백준 1063번 킹

내 코드



1. 구현 방법

  • 입력 받은 명령어(R, L, B, T, RT, LT, RB, LB)에 따라 물체(킹, 돌)이 움직이는 함수 move 를 만든다. 만약 움직일 수 없다면, 그대로 리턴한다.
  • 먼저 킹을 움직이고 돌과 만나는지 확인한다.
  • 만약 킹과 돌이 만난다면, 돌이 움직일 수 있는지 확인한다.
  • 만약 돌이 움직일 수 없다면, 아까 움직였던 킹을 다시 돌려놓는다. -> 변수 back 이 -1 이면 물체를 다시 되돌린다.



2. 놓쳤던 점

처음 만든 move 함수 안의 조건문은

case "R":
	if(object[0]<7) {
		object[0] += back;
		return true;
	}

R의 경우, 다음과 같이 물체의 현재 위치만을 고려하였다.
하지만 이렇게 하면 킹을 되돌릴 때, 이미 킹이 보드판의 경계에 있는 경우 (king의 x값==7) 해당 if문을 들어가지 않는다.

따라서, 다음과 같이 코드를 수정하여 back==-1 인 경우엔 if문을 항상 참으로 만들어 킹을 되돌릴 수 있다.

case "R":
	if(object[0]<7 || back<0) {
		object[0] += back;
		return true;
	}
profile
깊게 공부하는 개발자가 되기

0개의 댓글

관련 채용 정보