코딩도장 심사문제모음
33.6 심사문제: 카운트다운 함수 만들기
codermun
2020. 11. 6. 22:38
728x90
반응형
표준 입력으로 정수가 입력됩니다. 다음 소스 코드를 완성하여 함수 c를 호출할 때마다 숫자가 1씩 줄어들게 만드세요. 여기서는 함수를 클로저로 만들어야 합니다. 정답에 코드를 작성할 때는 def countdown(n):에 맞춰서 들여쓰기를 해주세요.
사용한 코드
1. nonlocal
2. def
3. return
첫 접근 방법
10을 입력할 경우 10(포함), 9, 8, ... 1 이 마지막이라는 것을 기준으로 범위만 정해주면
이전 연습문제와 같이 어려운 부분없이 문제 해결이 가능하다.
풀이
1. countdown의 지역 변수 count 를 만들고 n + 1로 입력된 n 값도 함께 출력되도록 만들어준다.
def countdown(n):
count = n + 1
2. down이라는 안쪽 함수를 하나 더 생성한다 (클로저사용을 위함)
함수 생성시 nonlocal 키워드 를 이용해 바깥 함수의 지역 변수 count를 count = count - 1로 변경해준다.
변경 후 재할당된 count를 리턴해준다.
def countdown(n):
count = n + 1
def down():
nonlocal count
count -= 1
return count
return down
n = int(input())
c = countdown(n)
for i in range(n):
print(c(), end=' ')
## c= countdown(n) --> countdown 함수를 클로저로 사용하는 방법이다.
countdown에는 down이 들어가있으며, c는 countdown으로 할당되기 때문에
c에도 down이 들어가게 된다.
정답 입력시 문제와 비교하여보자 def 필요없는 코드1 줄이 추가되어 계속 오류가 났었다.
※ 실제 코딩 도장의 해법과 다를 수 있으며, 답은 여러가지가 존재합니다.
코드 지적 정말 감사히 받겠습니다.
728x90
반응형