트랙
/
Python
Python
/
연습 문제
/
유치원 정원
유치원 정원

유치원 정원

쉬움

소개

유치원 반 아이들이 식물 기르기에 대해 배우고 있어요. 선생님은 아이들에게 씨앗을 나눠 주고 흙에 심어 기르게 하면 좋겠다고 생각했어요. 그래서 아이들은 창틀을 따라 작은 컵을 놓고, 컵마다 한 가지 식물을 심었어요. 아이들은 네 가지 씨앗 중에서 좋아하는 것을 골랐어요: grass, clover, radishes, violets.

지침

그림이 주어지면, 유치원 반의 각 아이가 어떤 식물을 담당하는지 알아내는 것이 과제예요.

이 반에는 아이가 12명 있어요:

  • Alice, Bob, Charlie, David, Eve, Fred, Ginny, Harriet, Ileana, Joseph, Kincaid, Larry

네 가지 종류의 씨앗을 심어요:

식물 그림 표기
Grass G
Clover C
Radish R
Violet V

각 아이는 각 줄에 두 개씩, 모두 네 개의 컵을 받아요:

[window][window][window]
........................ # each dot represents a cup
........................

선생님은 아이들의 이름을 알파벳 순으로 정렬한 뒤, 그 순서대로 컵을 배정해요. 그래서 Alice가 맨 처음이고 Larry가 맨 마지막이에요.

다음은 Alice의 식물을 나타내는 예시 그림이에요:

[window][window][window]
VR......................
RG......................

창문에 가장 가까운 첫 번째 줄에는 violet과 radish가 있어요. 두 번째 줄에는 radish와 grass가 있어요.

프로그램에는 창문에 가장 가까운 줄부터 시작해 왼쪽에서 오른쪽 순서로 식물이 주어져요. 이 정보를 바탕으로 각 학생에게 어떤 식물이 속하는지 알아낼 수 있어야 해요.

예를 들어, 정원이 다음과 같다고 하면:

[window][window][window]
VRCGVVRVCGGCCGVRGCVCGCGV
VRCCCGCRRGVCGCRVVCVGCGCV

그때 Alice의 식물을 물어보면 다음과 같은 결과를 내놓아야 해요:

  • Violets, radishes, violets, radishes

한편 Bob의 식물을 물어보면 이런 결과가 나와요:

  • Clover, grass, clover, clover

Python 트랙에서 이 연습 문제가 구성된 방식

이 연습 문제의 테스트는 프로그램이 Garden class로 구현되기를 기대해요 (classes도 참고해 봐요). Python의 클래스가 익숙하지 않다면, 이 Real Python 튜토리얼이 좋은 추가 출발점이 될 거예요.

class에는 plants라는 method를 구현해야 해요. 이 메서드는 학생의 이름을 인자로 받아, 그 학생에게 속한 식물 이름의 list를 반환해요.

생성자

예시 정원을 만들면 다음과 같아요:

[window][window][window]
VRCGVVRVCGGCCGVRGCVCGCGV
VRCCCGCRRGVCGCRVVCVGCGCV

이 코드는 테스트에서 Garden("VRCGVVRVCGGCCGVRGCVCGCGV\nVRCCCGCRRGVCGCRVVCVGCGCV")로 표현돼요.

이 표현이 제대로 동작하려면, class에 __init__() 특수 메서드를 구현해야 해요. __init__()나 생성자가 익숙하지 않다면, Python 문서의 클래스와 인스턴스 객체에 더 자세한 설명이 있어요.

기본 매개변수

일부 테스트에서는 학생 list가 __init__()에 인자로 전달돼요. 이 list는 문제 설명에서 제공하는 12명의 학생 명단을 덮어써야 해요. 다음 두 문 모두 __init__() 메서드에서 동작해야 해요:

# Make a garden based on the default 12-student roster.
Garden("VRCGVVRVCGGCCGVRGCVCGCGV\nVRCCCGCRRGVCGCRVVCVGCGCV") 

# Make a garden based on a 2-student roster.
Garden("VRCC\nVCGG", students=["Valorie", "Raven"]) 

한 가지 방법은 학생 list를 기본 인자로 만드는 거예요. Python 문서에서는 함수 정의를 설명하면서 default parameters를 자세히 다뤄요.

GitHub에서 편집 링크가 새 창이나 탭에서 열려요
Python Exercism

유치원 정원 문제를 시작해 볼 준비가 됐나요?

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