본문 바로가기

Programming/Java

Codingame - Mars lander 풀이

반응형


 * Codingame 은 각 프로그래밍 언어로 게임을 코드로 클리어하는 사이트.

 * C, Python, Java 등등 다양한 언어를 지원하며 COMPETE라는 경쟁 문제도 존재함.

 * 난이도는 쉬움(easy) 부터 다양하며, if문 for문을 땐 초보자라도 문제 풀이가 가능.



이번에 푼 Mars Lander는 연습 문제, 그냥 튜토리얼과 같아서 if문 한번만 쓰면 클리어가 가능하다.



문제에서 요구하는 클리어 조건을 요약하면, 


대기환경이 없는 화성의 조건(게임이니까)에서3.711m/s^2의 속도로 


자유 낙하하고 있는 우주선이 부딪히지않게 연료를 체크해서 클리어 하면된다. 


(Single Test 문제라 다른 Mars Lander를 풀면 더 어려워질듯)



전체적인 페이지 뷰는 이렇게 생겼다.


왼쪽 상단 그림이 게임 뷰가 되겠고 오른쪽 상단이 코드 뷰,


왼쪽 하단이 콘솔값을 보며 디버깅할 수 있는 뷰, 


마지막으로 오른쪽 하단에 유저가 Action을 취할 수 있는 버튼들이 있다.


위에 영어 본문을 보면, 평평한 바닥과 닿을 때 속도가 40을 넘으면 안된다고 한다.


Console output을 보며, 속도가 40이 넘어가는 곳을보면 Y값이 1385m에 해당한다.


그렇게 조건을 잡고 if문을 짜면,


 *이 코딩게임은 출력문으로 게임을 실행시키는 특이함이 있다.


if (Y < 1385)

{

System.out.println("0 4");

}

else

{

System.out.println("0 3");

}

 프린트문 안을 "a b"로 나눠보면,




a는 우주선의 각도 b는 연료분사량을 말한다. 그림을 보면 이해가 될 것이다.


게임 환경에서 최대 속도인 4로 연료를 분사하면 화성 대기를 이탈하기 때문에 


처음부터 4의 속도로 게임을 진행할 수 없다.


그러므로, 최적 조건인 vSpeend가 40이 되는 때를 보아, 연료분사를 4로 맞춰주면 게임을 클리어할 수 있다.



반응형

'Programming > Java' 카테고리의 다른 글

Codingame - Temperatures 풀이  (0) 2017.04.03
Java/자바의 exception 예외처리  (0) 2016.12.20