유튜브에서 개발자에 대한 영상을 찾아보다가 '코딩알려주는누나'라는 채널에서 'Karel'이라는 스탠퍼드에서 만든 코딩 게임(이라고 해야 하나..)을 소개해주는 영상을 보게 되었는데 이 게임이 자신이 개발자와 맞는지 테스트해볼 수 있는 좋은 방법이라고 해서 솔깃한 마음에 한 번 해보게 되었다.
https://stanford.edu/~cpiech/karel/learn.html
총 12 unit으로 구성되어 있는데 그중 unit 10, 11은 오류가 있어서 그냥 넘어가면 된다.
나는 unit 9까지는 조금 어려운 부분이 있었어도 다 풀긴 했는데 unit 12는 정말 어려워서 구글링의 도움을 받아서 답을 확인했다... 하지만 끝까지 다 풀지 못했다고 해서 좌절할 필요는 없다!
문제를 푸는 과정에서 즐거움과 도전의식, 문제를 해결했을 때의 짜릿한 성취감을 느꼈다면 당신은 이미 개발자가 될 충분한 자질을 갖춘 사람이다.
지금부터는 내가 Karel 게임을 하면서 고민이 필요했던 문제들에 대한 나의 답안을 공유해 보겠다.
unit 8-5이다.
World의 크기가 얼마나 되건 모든 곳에 Beeper를 놓고 Karel의 마지막 위치는 항상 World의 우측 상단에 있어야 한다.
함수로 putBeeperLine을 제공해 줬는데 이 함수는 Karel이 있는 위치에서 앞이 막힐 때까지 Beeper를 놓으면서 전진하는 함수이다. 이 함수를 이용해서 main 함수를 작성하면 되는데 내가 작성한 main 함수는 이렇다.
# unit 8-5
function main() {
putBeeperLine();
while(leftIsClear()){
turnAround();
while(frontIsClear()){
move();
}
turnRight();
move();
while(noBeepersPresent()){
turnRight();
putBeeperLine();
}
}
}
이 함수는 처음에는 Karel이 putBeeperLine 함수를 수행하고 왼쪽이 막히지 않은 상태면 반 바퀴를 돈 다음 다시 처음 위치로 돌아간다. 그리고 처음 위치에서 위로 한 칸을 올라간 다음 그 줄에 Beeper가 존재하지 않는 한 오른쪽으로 방향을 돌린 다음 putBeeperLine 함수를 수행한다.
unit 9-2이다.
Karel이 전진하다가 Beeper가 있는 곳에 가면 위로 끝까지 Beeper를 놓고 다시 돌아와서 전진해야 한다.
내가 작성한 main함수는 이렇다.
# 9-2
function main() {
while(frontIsClear()){
move();
if(beepersPresent()){
turnLeft();
move();
while(noBeepersPresent()){
putBeeper();
if(frontIsClear()){
move();
}
else{
turnAround();
while(frontIsClear()){
move();
}
turnLeft();
}
}
}
}
}
'이것저것' 카테고리의 다른 글
야곰 아카데미 코드 스타터 캠프 신청 (0) | 2023.02.09 |
---|---|
정보처리기사 필기 합격 후 실기 준비 (0) | 2022.09.06 |