Python/이것이코딩테스트다with파이썬

3강 :: 파이썬 문법 수 자료형

묘걍 2023. 9. 11. 20:10

자료형

- 모든 프로그래밍은 결국 데이터를 다루는 행위

     - 자료형에 대한 이해는 프로그래밍의 길에 있어 첫 걸음

- 파이썬의 자료형으로는 정수형, 실수형, 복소수형, 문자열, 리스트, 튜플, 사전 등이 있다.

     - 다양한 기능 제공

     - 파이썬의 자료형은 필수적으로 알아 두어야 한다.

     ex) 파이썬에서 리스트 = C++의 벡터 라이브러리, Java에서의 array list 라이브러리가 제공하는 기본 기능을 이미 가지고 있다.

          → 별도의 표준 라이브러리를 불러오지 않아도 됨

     - 다른 언어의 라이브러리 단에서 제공하는 강력한 기능을 라이브러리를 불러오지 않아도 쉽고 간결하게 이용 가능

 

정수형

- 정수형(Integer)은 정수를 다루는 자료형이다.

- 양의 정수, 음의 정수, 0

- 코딩 테스트에서 출제되는 많은 문제들은 정수형을 주로 다루게 됨

# 양의 정수
a = 1000  # 대입 연산자 이용
print(a)


# 음의 정수
a = -7
print(a)


# 0
a = 0
print(a)

# ---------------------------------

a = a + 5
print(a)

a = a - 3
print(a)

 

실수형

- 실수형(Real Number)은 소수점 아래의 데이터를 포함하는 수 자료형

- 파이썬에서는 변수에 소수점(.)을 붙인 수를 대입하면 실수형 변수로 처리됨

- 소수부가 0이거나, 정수부가 0인 소수는 0을 생략하고 작성할 수 있다.

     ex) 0.7이라면 .7로 작성 가능

# 양의 실수
a = 157.93
print(a)

# 음의 실수
a = -1837.2
print(a)

# 소수부가 0일 때 0을 생략
a = 5.0
print(a)

# 정수부가 0일 때 0을 생략
a = -0.7
print(a)

 

지수 표현 방식

- 파이썬에서는 e나 E를 이용한 지수 표현 방식을 이용할 수 있다.

     - e나 E 다음에 오는 수는 10의 지수부를 의미한다

     - 0이 많이 포함된 10의 n제곱 값을 이용하고자 할 때 0을 일일히 입력하는 것 보다 간결함

     - 예를 들어 1e9라고 입력하게 되면, 10의 9제곱(1,000,000,000)이 된다.

- 지수 표현 방식은 임의의 큰 수를 표현하기 위해 자주 사용된다

- 최단 경로 알고리즘에서는 도달할 수 없는 노드에 대하여 최단 거리를 무한(INF)로 설정하곤 한다.

- 이때 가능한 최댓값이 10억 미만이라면 무한(INF)의 값으로 1e9를 사용할 수 있다.

# 1,000,000,000의 지수 표현 방식
a = 1e9
print(a)

# 752.5
a = 75.25e1
print(a)

# 3.954
a = 3954e-3
print(a)

- 지수 표현 방식은 실수형으로 출력되기 때문에 만약 정수형 데이터를 다룬다면 오류 발생을 방지하기 위해

   int()를 이용해 정수 데이터로 바꿔주어야 한다

   (실수 연산 오차로 인해 발생할 수 있는 오류도 예방할 수 있다.)

 

실수형 더 알아보기

- 오늘날 가장 널리 쓰이는 IEEE754 표준에서는 실수형을 저장하기 위해 4바이트, 혹은 8바이트의 고정된 크기의 메모리를 할당하므로, 컴퓨터 시스템은 실수 정보를 표현하는 정확도에 한계를 가진다.

- 예를 들어 10진수 체계에서는 0.3과 0.6을 더한 값이 0.9로 정확히 떨어진다.

     - 하지만 2진수에서는 0.9를 정확하게 표현할 수 잇는 방법이 없다

     - 컴퓨터는 최대한 0.9와 가깝게 표현하지만 미세한 오차가 발생하게 된다.

ex) 1을 3으로 나눈 값

     - 10진수 체계 : 0.33333... 이렇게 10진수에서도 정확히 표현되지 않는 수가 있다

           → 1/3 같이 분수 표기법을 이용하기도 함

a = 0.3 + 0.6
print(a)

if a == 0.9:
    print(True)
else:
    print(False)

- 개발 과정에서 실수 값을 제대로 비교하지 못해서 원하는 결과를 얻지 못할 수도 있다

- 이럴 때는 round() 함수를 이용할 수 있다. (권장)

- 간단하게 반올림 목적으로 사용할 수 있다.

- 예를 들어 123.456을 소수 셋 째 자리에서 반올림하려면 round(123.456, 2)라고 작성한다.

     - 결과는 123.46이 된다.

a = 0.3 + 0.6
print(round(a, 4))

if round(a, 4) == 0.9:
    print(True)
else:
    print(False)

 

수 자료형의 연산

- 수 자료형에 대하여 사칙 연산과 나머지 연산자가 많이 사용된다.

- 단, 나누기 연산자(/)를 주의해서 사용해야한다.

     - 파이썬에서 나누기 연산자(/)는 나눠진 결과를 실수형으로 반환한다

     - 다른 보통의 언어에서 나누기 연산자의 결과는 그 몫만 담는 게 일반적

- 다양한 로직을 설계할 때 나머지 연산자(%)를 이용해야할 때가 많다

     - ex) a 가 홀수인지 체크해야하는 경우

              특정한 수를 2로 나눈 나머지 값이 1이라면 홀수이다

- 파이썬에서는 몫을 얻기 위해 몫 연산자(//)를 사용한다

- 이외에도 거듭 제곱 연산자(**)를 비롯해 다양한 연산자들이 존재한다.

a = 7
b = 3

# 나누기
print(a / b)

# 나머지
print(a % b)

# 몫
print(a // b)

 

출처: https://youtu.be/INg6kdOEEVc?si=y0BEk1iiv33HWANq