Skip to content

Python 정수 나눗셈: // 연산자 완벽 가이드

Kanaries Team
Name
Kanaries Team

Updated on

정수 나눗셈(floor division)은 Python에서 두 숫자를 나누고 결과를 가장 가까운 정수로 내림하는 기본적인 산술 연산입니다. 부동 소수점 숫자를 반환하는 일반 나눗셈과 달리, // 연산자를 사용한 정수 나눗셈은 항상 결과보다 작거나 같은 가장 큰 정수를 반환합니다. 이 글에서는 Python 정수 나눗셈에 대해 알아야 할 모든 것을 안내합니다.

Python은 두 가지 나눗셈 연산자를 제공합니다: 일반 나눗셈 연산자 /와 정수 나눗셈 연산자 //. 각각을 언제 사용해야 하는지 이해하는 것은 효율적이고 버그 없는 Python 코드를 작성하는 데 필수적입니다.

Python Pandas DataFrame에서 코드 없이 데이터 시각화를 빠르게 만들고 싶으신가요?

PyGWalker는 시각화를 통한 탐색적 데이터 분석을 위한 Python 라이브러리입니다. PyGWalker (opens in a new tab)는 pandas dataframe(및 polars dataframe)을 시각적 탐색을 위한 Tableau 대안 사용자 인터페이스로 변환하여 Jupyter Notebook 데이터 분석 및 데이터 시각화 워크플로우를 단순화할 수 있습니다.

데이터 시각화를 위한 PyGWalker (opens in a new tab)

Python의 정수 나눗셈이란?

정수 나눗셈은 결과를 가장 가까운 정수로 내림하는 나눗셈 연산입니다. Python에서는 // 연산자를 사용하여 수행됩니다. "floor"(바닥)라는 용어는 항상 음의 무한대 방향으로 반올림하는 수학적 floor 함수에서 유래합니다.

간단한 예시입니다:

# 일반 나눗셈
print(7 / 2)   # 출력: 3.5
 
# 정수 나눗셈
print(7 // 2)  # 출력: 3

보시다시피, 일반 나눗셈은 3.5를 반환하지만, 정수 나눗셈은 3을 반환합니다 - 이는 3.5보다 작거나 같은 가장 큰 정수입니다.

정수 나눗셈 문법

Python에서 정수 나눗셈의 문법은 간단합니다:

결과 = 피제수 // 제수

여기서:

  • 피제수는 나누어지는 숫자
  • 제수는 나누는 숫자
  • 결과는 나눗셈의 floor 값

다양한 데이터 타입에서의 정수 나눗셈

정수

두 피연산자가 모두 정수인 경우, 정수 나눗셈은 정수를 반환합니다:

print(10 // 3)   # 출력: 3
print(15 // 4)   # 출력: 3
print(20 // 5)   # 출력: 4

부동 소수점 숫자

적어도 하나의 피연산자가 float인 경우, 정수 나눗셈은 float를 반환합니다(하지만 여전히 내림됨):

print(10.0 // 3)   # 출력: 3.0
print(10 // 3.0)   # 출력: 3.0
print(10.5 // 3)   # 출력: 3.0

음수

음수에서의 정수 나눗셈은 까다로울 수 있습니다. 정수 나눗셈은 항상 음의 무한대 방향으로 반올림하며, 0 방향으로는 반올림하지 않는다는 것을 기억하세요:

print(7 // 2)    # 출력: 3
print(-7 // 2)   # 출력: -4  (-3이 아닙니다!)
print(7 // -2)   # 출력: -4
print(-7 // -2)  # 출력: 3

이 동작을 이해하는 것이 중요합니다. -7 / 2 = -3.5이고, -3.5의 floor는 -3이 아니라 -4이기 때문입니다.

정수 나눗셈 vs 일반 나눗셈

연산연산자결과 타입예시출력
일반 나눗셈/항상 float7 / 23.5
정수 나눗셈//int 또는 float7 // 23
# 비교
a = 17
b = 5
 
print(f"일반 나눗셈: {a} / {b} = {a / b}")     # 3.4
print(f"정수 나눗셈: {a} // {b} = {a // b}")   # 3

정수 나눗셈의 실용적인 사용 사례

1. 페이지 또는 그룹 계산

전체 안에 몇 개의 완전한 그룹이 들어가는지 결정해야 할 때:

전체_항목 = 23
페이지당_항목 = 5
 
완전한_페이지 = 전체_항목 // 페이지당_항목
print(f"완전한 페이지: {완전한_페이지}")  # 출력: 4

2. 단위 변환

정수 나눗셈은 단위 변환에 유용합니다:

전체_초 = 3725
 
시간 = 전체_초 // 3600
= (전체_초 % 3600) // 60
= 전체_초 % 60
 
print(f"{시간}시간 {}{}초")  # 출력: 1시간 2분 5초

3. 배열 인덱싱 및 위치 지정

그리드나 2D 배열로 작업할 때:

# 1D 인덱스를 2D 좌표로 변환
인덱스 = 17
= 5
 
= 인덱스 //
열_위치 = 인덱스 %
 
print(f"인덱스 {인덱스} -> 행: {}, 열: {열_위치}")  # 행: 3, 열: 2

4. 중간 인덱스 찾기

이진 검색 및 유사한 알고리즘에서 유용:

def 이진_검색(배열, 목표):
    왼쪽, 오른쪽 = 0, len(배열) - 1
 
    while 왼쪽 <= 오른쪽:
        중간 = (왼쪽 + 오른쪽) // 2  # 중간 인덱스를 위한 정수 나눗셈
        if 배열[중간] == 목표:
            return 중간
        elif 배열[중간] < 목표:
            왼쪽 = 중간 + 1
        else:
            오른쪽 = 중간 - 1
 
    return -1

divmod() 함수

Python은 몫(정수 나눗셈)과 나머지를 한 번의 연산으로 반환하는 내장 함수 divmod()를 제공합니다:

, 나머지 = divmod(17, 5)
print(f"17 // 5 = {}")      # 출력: 3
print(f"17 % 5 = {나머지}")   # 출력: 2

두 값이 모두 필요할 때 //%를 따로 호출하는 것보다 더 효율적입니다.

math 모듈을 사용한 정수 나눗셈

math.floor() 함수를 일반 나눗셈과 결합하여 정수 나눗셈을 구현할 수도 있습니다:

import math
 
결과1 = 7 // 2
결과2 = math.floor(7 / 2)
 
print(결과1)  # 출력: 3
print(결과2)  # 출력: 3

두 방법 모두 같은 결과를 생성하지만, //가 더 간결하고 일반적으로 선호됩니다.

흔한 실수와 피하는 방법

실수 1: 정수 나눗셈과 절삭 혼동

# 정수 나눗셈은 음의 무한대 방향으로 반올림
print(-7 // 2)  # 출력: -4
 
# 절삭(int 변환)은 0 방향으로 반올림
print(int(-7 / 2))  # 출력: -3

실수 2: float 결과 잊기

# 하나의 피연산자가 float이면 결과도 float
print(type(10 // 3))    # <class 'int'>
print(type(10.0 // 3))  # <class 'float'>

실수 3: 0으로 나누기

# 이것은 ZeroDivisionError를 발생시킵니다
try:
    결과 = 10 // 0
except ZeroDivisionError:
    print("0으로 나눌 수 없습니다!")

성능 고려사항

정수 나눗셈은 일반적으로 일반 나눗셈 후 int() 또는 math.floor()를 사용하는 것보다 빠릅니다:

import timeit
 
# 정수 나눗셈 연산자
시간1 = timeit.timeit('7 // 2', number=1000000)
 
# 일반 나눗셈 + int()
시간2 = timeit.timeit('int(7 / 2)', number=1000000)
 
print(f"// 연산자: {시간1:.4f}초")
print(f"int(/) 방법: {시간2:.4f}초")

FAQ

Python에서 /와 //의 차이점은 무엇인가요?

/ 연산자는 참 나눗셈을 수행하고 항상 float를 반환하는 반면, //는 정수 나눗셈을 수행하고 결과보다 작거나 같은 가장 큰 정수를 반환합니다. 예를 들어, 7 / 23.5를 반환하지만, 7 // 23을 반환합니다.

음수에서 정수 나눗셈은 어떻게 작동하나요?

정수 나눗셈은 항상 음의 무한대 방향으로 반올림합니다. 따라서 -7 // 2-3이 아니라 -4와 같습니다. -4-3.5보다 작거나 같은 가장 큰 정수이기 때문입니다.

일반 나눗셈 대신 정수 나눗셈을 언제 사용해야 하나요?

배열 인덱스 계산, 완전한 그룹 카운팅, 정수 산술이 필요한 알고리즘 구현 등 정수 결과가 필요하고 부동 소수점 정밀도 문제를 피하고 싶을 때 정수 나눗셈을 사용하세요.

결론

// 연산자를 사용한 Python 정수 나눗셈은 가장 가까운 정수로 내림하는 정수 나눗셈을 수행하는 강력한 도구입니다. 특히 음수와 부동 소수점 피연산자에서의 동작을 이해하는 것은 올바른 Python 코드를 작성하는 데 중요합니다. 알고리즘 구현, 단위 변환, 배열 인덱스 작업 등 어떤 작업을 하든 정수 나눗셈은 Python 도구 키트의 필수적인 연산입니다.