본문 바로가기

Python 배우기

[외계어 배우기] 문제#5 Three Cups

이제 문제를 해결해 보자.

 

문제는 이전에 올린 글 에서 확인할 수 있다.

 

[외계어 배우기] 반복문(문제#5 Three Cups)

어느새 Chapter3 반복문에 대해서 배울 차례이다. 이 책에서 3장의 제목은 "반복문: 한정 루프"이고 4장의 제목은 "반복문: 무한정 루프"이다. '한정', '무한정'이라는 용어 때문에 'limit', 'unlimit'이라

4programmer.tistory.com

 

루프에서 사용할 변수명은 swap_type이다. 교환 유형을 말하는 것이다. 이처럼 변수명은 누가 봐도 이해할 수 있게 작성해야 합니다. (변수명이나 코드를 표현할 수 없은 도메인에 관한 것들은 주석으로 남긴다.)

 

우선 책에 있는 코드를 보자.

 

 

코드를 보자.

1. 교환에 대한 문자열이 입력된다.

2. 볼은 1번 위치에 있다.

3. 만약 교환 유형이 A이고 볼이 1에 있다면, 볼은 2에 위치하게 된다.

4. 만약 교환 유형이 A이고 볼이 2에 있다면, 볼은 1에 위치하게 된다.

5. 만약 교환 유형이 B이고 볼이 2에 있다면, 볼은 3에 위치하게 된다.

6. 만약 교환 유형이 B이고 볼이 3에 있다면, 볼은 2에 위치하게 된다.

7. 만약 교환 유형이 C이고 볼이 3에 있다면, 볼은 1에 위치하게 된다.

8. 만약 교환 유형이 C이고 볼이 1에 있다면, 볼은 3에 위치하게 된다.

9. 볼의 위치를 출력하라.

덧, 여기에서 교환 유형 A는 위치 3에 영향을 주지 않고, 교환 유형 B는 위치 1에, 교환 유형 C는 위치 2에 영향을 주지 않는다.

 

문제를 해결하였다. 그런데, 이 코드가 잘 짜여진 코드인가?

 

파이썬 공부를 하며 선생님이 매일 가장 강조하는 이야기는 '코드가 가역적인가?'이다.

 

and로 이어진 문장보다 훨씬 가독성이 좋은 코드인 것 같다. 그리고 무엇보다 코드만 읽고도 어떤 문제를 해결하고자 하는지 이해할 수 있다.

 

덧, D.R.Y Don't Repeat Yourself 코딩할 때 기본 원칙
덧, 프로그램이 잘못된 로직에 따라 잘못된 답을 생성하는 오류를 '버르'라고 한다.
덧, 버그를 수정하기 위해 코드를 작성하는 것을 '디버깅'이라고 한다.

 

반응형