로보즐

처음에 이 문제를 봤을 때는 굉장히 쉽게 풀 줄 알았다. 파란색 발판에서는 직진, 빨간색 발판일 때만 우회전을 하면 되니까. 엄청나게 단순하게 풀 줄 알았는데, 이게 답이 아니었다! 왜냐하면 처음 시작 지점 바로 뒤편에 별이 하나 있었기 때문이다. 결국은 처음 시작할 때 뒤로 돌아 별을 먹고 오던지, 아니면 쭉 가다가 초록색 지점에 도착하고 뒤로 돌아 가던지 선택해야 했다. 나는 처음 시작할 때 뒤로 돌아 별을 먹고 진행하는 방법을 선택했다. 깔끔한 정답은 아닐 거 같다는 생각이 든다. 하지만 그래도 풀었으니까.. ㅎㅎ 처음으로는 F1에서 뒤로 돌고 F3를 실행하고, F3는 별을 먹고 다시 뒤로 돈다. 그리고 F2 무한 반복.
말 그대로 두 개의 함수를 이용해서 풀어야 하는 문제다. F1과 F2를 반복시켜 도달하면 끝! F1은 한칸 직진, 한칸 오른쪽으로 꺾고 F2를 호출하고, F2역시 한칸 직진, 한칸 왼쪽으로 꺾고 F1을 호출함. 두 개의 함수를 서로 호출하게끔 한다는 점이 재밌었다.
아주 쉬운 문제는 아니다. F2, F3이 있는 만큼 어떤 함수를 어떻게 반복할 것인지가 관건이 된다. 두 칸 직진후 좌회전, 또는 우회전이 반복되는 구조라 다음과 같이 함수를 구성했다. F2: 직진 2번, 좌회전 한번 F3: 직진 2번, 우회전 한번 이게 유일한 답은 아니겠지만, 나는 이렇게 풀었다.
두번 직진하고 꺾다가, 위쪽의 긴 라인에서는 쭉 직진을 해야하는 것이 포인트. 결국은 초록색 발판에서 꺾는 것을 다시 원래대로 돌리는 명령을 수행해야 한다.
초록색 발판을 조건으로 삼아야 할 거 같은데 어떻게 문제를 풀지 고민이 되었다. 생각한 결론은, 한 칸을 가고 다음 칸이 초록색일 경우 90도 회전하기를 반복. 조금 많이 빙글빙글 돌긴 했는데 풀리긴 풀렸다. 아마 명령 3개 타일로 해결하려면 이 방법밖에 없지 않을까?
문제가 복잡해 보이지만 223번 문제 처럼 어렵게 생각할 필요 없다. 각 색깔의 발판이 어떤 위치에 있고, 어떤 역할을 하는지만 파악하면 쉽게 풀 수 있다. 아마 답은 이 방법 외에는 없을 것 같다. 초록색 발판은 다시 방향을 정반대로 바꿔주는 역할을, 빨간색 발판은 방향을 90도 전환하는 역할을 하고 있다. 반복을 조금 오래하긴 하지만 잘 풀린다.
처음 이 문제를 보면 구조가 복잡해 보여서 당황할 수 있다. 하지만 초록색과 빨간색 발판의 위치를 주의깊게 본다면 어렵지 않게 해결할 수 있을 것이다. 이 문제도 F2를 만들지 않아도 풀렸다. 초록색 발판일 때 방향을 180도 전환하고, 빨간색 발판일 때 90도 전환해 방향을 틀어 직진시키면 모든 칸을 순환할 수 있다.
빨간색 발판이 꺾이는 지점으로 빨간색 발판일 때 조건만 잘 써주면 된다. 한 가지 주의할 점은, 위쪽 빨간색 발판은 오른쪽으로 꺾어야 하지만, 아래쪽 빨간색 발판은 왼쪽으로 꺾어야 한다는 점. F2를 안써도 쉽게 풀 수 있었다.
양 사이드의 발판이 어떤 역할인지만 파악하면 쉽게 풀 수 있다. 초록색과 빨간색 발판의 경우 방향을 돌려주는 것만 잘 해주면 쉽게 해결.
쉽다. 각 발판 색깔에 해당하는 조건만 잘 걸어주면 됨.
kmicety1
'로보즐' 태그의 글 목록 (3 Page)