숫자 관련 해결방안

SA Jung·2022년 9월 27일
1

Python 함수 정리

목록 보기
1/7

math 라이브러리는 각종 수학식을 제공해준다.
코딩테스트 준비를 하면서 필요한 각종 수학식과 보다 향상된 실력을 위해 math 라이브러리를 정리한다.

또한, numpy 라이브러리도 각종 list등의 계산을 보다 쉽게 해결해준다. 자주 쓰이는 numpy 및 코테에 필요한 함수를 정리한다.

1. math

1-1. 올림, 내림, 반올림

1-1-1. 올림함수 이용(math.ceil)

import math
a = 4.3
b = 4.6
print (math.ceil(a)) # 5
print (math.ceil(b)) # 5

1-1-2. 내림함수 이용(math.floor)

import math
a = 4.3
b = 4.6
print (math.floor(a)) # 4
print (math.floor(b)) # 4

1-1-3. 반올림함수 이용(round)

a = 4.3
b = 4.6
print (round(a)) # 4
print (round(b)) # 5

1-2. 무한대(Infinity)

[math.inf]

import math

# 양의 무한대 표현
p_inf = math.inf 
# 음의 무한대 표현
n_inf = -math.inf

1-3. n제곱, 제곱근(root)

1-3-1. n제곱 함수 이용(math.pow)

import math
a = 3
print (math.pow(a,2)) # a의 2제곱 = 9
b = 3
print (math.pow(b,3)) # b의 3제곱 = 27

1-3-2. 제곱근(root) 함수 이용(math.sqrt)

import math
c = 9 
print (math.sqrt(c)) # 9의 제곱근 = 3

2. numpy

2-1 list 요소들 평균값 구하기

  • python에서 list 내 평균값 구하는 식은 없다.
  • sum(list)는 있다.
import numpy as np
num_list = [1,2,3,4,5,6,7,8,9,10]
np.average(num_list) 
# 5.5

3. 기본 라이브러리

3-1 float 형인 변수가 정수인지 아닌지 판별하기

  • float(num).is_integer()
    • num이 정수면 True 반환
    • num이 정수가 아니면 False 반환
num = 10.00
if float(num).is_integer():
    print ("정수입니다")
else:
    print ("정수가 아닙니다.")

# 정수입니다.
num = 10.12345
if float(num).is_integer():
    print ("정수입니다")
else:
    print ("정수가 아닙니다.")

# 정수가 아닙니다.

3-2 divmod로 몫과 나머지 한번에 계산하기

  • divmod(a,b)를 이용하여 a를 b로 나눈 몫과 나머지를 한번에 변수에 저장할 수 있다. (단, 2개의 변수 선언 필요!)
# divmod
div,mod = divmod(10,3)
print (div,mod)

4. 진수 변경 및 활용하기

4-1. 2진수, 8진수, 16진수로 변경하기

# bin (2진수로 변경하기)
# 15 -> 1111
print (bin(15))
 # 0b1111

# oct (8진수로 변경하기)
# 15 -> 0o17
print(oct(15))
 # 0o17

# hex (16진수로 변경하기)
# 15 -> 0xf
print(hex(15))
 # 0xf
  • 2진수는 0b, 8진수는 0o, 16진수는 0x

4-2. n진수로 변경하기

## 10진수를 n진수로 변경하기
def solution(num, n):
    rev_base = ''

    while num > 0:
        num, mod = divmod(num, n)
        rev_base += str(mod)

    return rev_base[::-1]
    # 역순인 진수를 뒤집어 줘야 원래 변환 하고자하는 base가 출력
print(solution(45, 3))
  • num을 n진수로 변경하기

4-3. n진수를 10진수로 변경하기

# str (10진수로 변경하기)
# 1111 -> 15
print (str(0b1111))

# int (n진수일때 10진수로 변경법)
print(int('222', 3))

4-4. 2진수 연산하기

# AND, OR, XOR, NOT 연산하기
# AND (&)
print (bin(4 & 6))
# OR (|)
print (bin(4 | 6))
# XOR (^)
print (bin(4 ^ 6))
# NOT (~)
print (bin(~4))

5. 소수 판별하기

5-1. 모든 경우의 수 판별하기

# 특정 숫자 x가 소수인지 판별하는 가장 기본적인 알고리즘
def primenumber(x):
    for i in range(2, x):	# 2부터 x-1까지의 모든 숫자
    	if x % i == 0:		# 나눠떨어지는게 하나라도 있으면 False
        	return False
    return True				# 전부 나눠떨어지지 않으면 True
  • 숫자의 크기가 커질경우 비효율적임

5-2. 제곱근까지 판별하기

import math

# 소수 판별 - 2부터 x의 제곱근까지의 숫자
def primenumber(x):
	for i in range(2,int(math.sqrt(x)+1)):
    	# 나눠떨어지는 숫자가 있으면 소수가 아님 - False 리턴
		if x % i == 0:
			return False
    # 전부 나눠떨어지지 않는다면 소수임 - True 리턴
 	return True		
profile
Tomorrow will be better than yesterday :)

0개의 댓글