트랙
/
Groovy
Groovy
/
연습 문제
/
로봇 시뮬레이터
로봇 시뮬레이터

로봇 시뮬레이터

쉬움

지침

로봇 시뮬레이터를 만들어요.

로봇 공장의 시험 시설에는 로봇의 움직임을 검증할 프로그램이 필요해요.

로봇이 할 수 있는 움직임은 세 가지예요:

  • 오른쪽으로 회전
  • 왼쪽으로 회전
  • 전진

로봇은 가상의 무한 격자에서 특정 방향(north, east, south, west 중 하나)을 향한 채 {x,y} 좌표, 예를 들어 {3,8}에 놓여요. 좌표는 north와 east 방향으로 갈수록 커져요.

그다음 로봇은 여러 명령을 받아요. 그러면 시험 시설이 로봇의 새로운 위치와 로봇이 향하고 있는 방향을 검증해요.

  • 문자열 "RAALAL"은 다음과 같은 뜻이에요:
    • 오른쪽으로 회전
    • 두 번 전진
    • 왼쪽으로 회전
    • 한 번 전진
    • 또다시 왼쪽으로 회전
  • 로봇이 {7, 3}에서 north 방향을 향한 채 시작한다고 해봐요. 그러면 이 명령들을 실행했을 때 로봇은 {9, 4}에서 west 방향을 향하고 있어야 해요.

Groovy의 프로퍼티와 필드

이 연습 문제에서는 스텁이 getX() 같은 게터를 정의하는데, 테스트는 .x로 값을 직접 접근한다는 걸 눈치챘을 거예요. 이는 Groovy가 프로퍼티를 정의하는 방식 때문이에요. 하나씩 살펴봐요:

  • 필드는 데이터를 저장하는 데 사용되는 클래스, 인터페이스 또는 트레이트의 멤버예요.
  • 프로퍼티는 클래스의 외부에서 볼 수 있는 특징이에요.

Groovy 프로퍼티에 관한 핵심 사항:

  • Groovy는 private이 아닌 필드에 대해 게터와 세터를 자동으로 생성해요(final로 표시된 필드라면 게터만 생성해요).
  • 프로퍼티는 이름으로 접근할 수 있고(이 연습 문제의 테스트에서처럼), 게터나 세터를 투명하게 호출해요.
  • 관례상, 게터나 세터가 있다면 backing field가 없어도 Groovy는 프로퍼티로 인식해요.

이 연습 문제에서는 올바른 구현을 유도하기 위해 필요한 게터만(따라서 위에서 설명한 대로 프로퍼티만) 지정했어요. 어떤 필드(그리고 그 타입)가 해법에 가장 적합한지는 자유롭게 정할 수 있어요.

필드와 프로퍼티에 대해 더 알아보고 싶다면, Groovy 문서의 3.3장. 필드와 프로퍼티를 참고해요.


출처

유명 기업의 면접 질문에서 영감을 받았어요.
GitHub에서 편집 링크가 새 창이나 탭에서 열려요
Groovy Exercism

로봇 시뮬레이터 문제를 시작해 볼 준비가 됐나요?

Exercism에 가입하고 Groovy 트랙을 연습 문제 66개, 그리고 실제 사람의 멘토링과 함께 배우고 익혀 보세요. 모두 무료예요.