이 튜토리얼에서는 반복문(loop)을 사용하지 않고 어떤 수 n의 배수 m개를 구하는 프로그램을 작성해 보겠습니다. 예를 들어 n = 4, m = 3이라면 출력 결과는 4, 8, 12가 되어야 합니다. 즉, 4의 배수 세 개를 구하는 것이죠. 여기서 핵심 제약 조건은 바로 반복문을 사용하면 안 된다는 점입니다.
range() 함수 활용하기
반복문 없이 원하는 결과를 얻으려면 Python의 range() 함수를 사용할 수 있습니다. 그렇다면 range() 함수는 정확히 어떤 역할을 할까요? range() 함수는 범위(range) 객체를 반환하며, 이 객체는 반복자(iterator)로 변환하여 사용할 수 있습니다.
먼저 range() 함수의 기본 문법부터 살펴보겠습니다.
문법
range(start, end, step)
- start: 숫자 범위의 시작 값
- end: 숫자 범위의 끝 값 (단, end 값 자체는 범위에 포함되지 않습니다)
- step: 인접한 두 숫자 사이의 간격 (생략 가능하며, 생략 시 기본값은 1입니다)
range(1, 10, 2) --> 1, 3, 5, 7, 9 range(1, 10) --> 1, 2, 3, 4, 5, 6, 7, 8, 9
예제 코드
## range() 함수 사용 예시 ## start = 2, end = 10, step = 2 -> 2, 4, 6, 8 evens = range(2, 10, 2) ## range 객체를 리스트로 변환하여 출력 print(list(evens)) ## start = 1, end = 10, step 생략 -> 1, 2, 3, 4, 5, 6, 7, 8, 9 nums = range(1, 10) ## range 객체를 리스트로 변환하여 출력 print(list(nums))
실행 결과
위 코드를 실행하면 다음과 같은 결과를 확인할 수 있습니다.
[2, 4, 6, 8] [1, 2, 3, 4, 5, 6, 7, 8, 9]
n의 배수 m개 출력하기
이제 range() 함수의 동작 원리를 이해했으니, 본격적으로 배수를 구하는 코드를 작성해 보겠습니다. 구현 순서는 다음과 같습니다.
- n과 m 값을 초기화합니다.
- n의 배수를 반환하도록 range() 함수를 작성합니다.
- 시작 값을 n으로 설정하고, 끝 값을 (n * m) + 1로, step 값을 n으로 지정합니다.
핵심 아이디어는 간단합니다. 시작점을 n으로 잡고, 간격(step)을 n으로 설정하면 range() 함수가 자동으로 n의 배수들만 생성해 줍니다. 끝 값에 1을 더해주는 이유는 range() 함수의 특성상 끝 값이 범위에 포함되지 않기 때문입니다.
예제 코드
## n과 m 초기화 n = 4 m = 5 ## n의 배수를 반환하는 range() 함수 작성 multiples = range(n, (n * m) + 1, n) ## range 객체를 리스트로 변환하여 출력 print(list(multiples))
실행 결과
위 프로그램을 실행하면 다음과 같은 결과가 출력됩니다.
[4, 8, 12, 16, 20]
마무리
이처럼 range() 함수를 활용하면 for문이나 while문 같은 반복문을 전혀 사용하지 않고도 n의 배수 m개를 손쉽게 구할 수 있습니다. range(start, end, step)의 세 가지 매개변수만 올바르게 설정하면 되기 때문에 코드도 매우 간결해집니다. 튜토리얼을 읽으면서 궁금한 점이나 어려운 부분이 있다면 댓글로 남겨주세요!