본문 바로가기
프로그래밍 코딩테스트/파이썬_코테

[코테 - 기본기]

by 애플파ol 2024. 12. 21.
  • 햇갈리는 자료형 초기화 방법 정리

  • 집합(set) - 합칩합, 교집합, 차집합
    1. 중복을 허용하지 않음
    2. 순서가 없음
    3. 데이터 조회 및 수정에 있어서 상수시간에 처리가능
# 집합 자료형 초기화 방법 1
data_1=set([1,1,1,2,3,4,5,6])
print(data_1)
print(type(data_1))
print()

# 집합 자료형 초기화 방법 2
data_2={1,2,3,3,4,4,5}
print(data_2)
print(type(data_2))

a=set([1,2,3,4,5])
b=set([3,4,5,6,7])

# 합집합
print(a|b)
# 교집합
print(a&b)
# 차집합
print(a-b)
print()

data_3=set([1,2,3])
#새로운 원소 추가
data_3.add(4)
print(data_3)

# 새로운 원소 여러개 추가
data_3.update([5,6])
print(data_3)

# 특정한 값을 갖는 원소 삭제
data_3.remove(3)
print(data_3)

 

 

  • 딕셔너리(dictionary) - 다른 언어에서는 Hash Table이라고 부름
    1. 데이터의 조회 및 수정에 있어서 상수 시간 O(N) 에 처리가능
# 딕셔너리 초기화 방법 1.
data=dict()

# 키, 값
data['사과']='Apple'
data['바나나']='banana'
data['코코넛']='coconut'

print(data)
print()


# 딕셔너리 초기화 방법 2
data_2={
    '홍길동' : 50,
    '이순신' : 49
}

print(list(data_2.values())) # 리스트로 형변환
print(data_2.values())
print()



# 키 값이 딕셔너리에 존재하는지 확인
if '사과' in data:
    print("true")
print()



# keys, values 추출.
print(data.keys())
print(data.values())
print()


# 키 값에 맞는 value 출력
for i in data.keys():
    print('key 값 : ',i)
    print('value 값 ',data[i])

 

 

 

  • 리스트(list) 
my_list = [1, 2, 3]
my_list.append(4)  # 4를 리스트 끝에 추가
print(my_list)  # 출력: [1, 2, 3, 4]


my_list = [1, 2, 3]
my_list.append([4, 5])  # 리스트 자체를 추가
print(my_list)  # 출력: [1, 2, 3, [4, 5]]


my_list = [1, 2, 3]
my_list.extend([4, 5, 6])  # [4, 5, 6]의 모든 요소를 추가
print(my_list)  # 출력: [1, 2, 3, 4, 5, 6]


list1 = [1, 2, 3]
list2 = [4, 5]
result = list1 + list2  # 새로운 리스트 생성
print(result)  # 출력: [1, 2, 3, 4, 5]

 

 

 

 


  • 자주 사용되는 표준 입력 방법
# 기본 데이터 입력
n=int(input())

 

# 각 데이터를 공백을 기주으로 구분하여 입력, 
# map() : iterable의 각 요소에 대해 function 을 적용한 결과를 새롭게 반환함, map(function, iterable)
# map 안하면, 문자열(' ')로 나옴
data= list(map(int,input().split()))
print(data)

 

# 공백을 기준으로 입력의 개수가 정해져 있거나, 많지 않을 때

a, b, c = map(int,input().split())
print(a, b, c)

 

 


  • 람다 표현식
    1. 람다 표현식을 이용하면 함수를 간단하게 작성 가능
    2. 함수자체를 입력으로 받을 때 유용하게 사용됨
    3. lambda 인자 : 표현식
print((lambda a,b : a+b)(3,7)) # 출력값 10

 

 


  • 최대공약수(Greatest common divisor), 최소공배수(Least common multiple)
import math

def lcm(a,b):
    return a*b //math.gcd(a,b)

a=21
b=14
print(math.gcd(21,14)) # GCD계산
print(lcm(21,14)) #lcm계산

 

 

 


 

  • 소수의 판별 : 기본적인 알고리즘
# 소수 판별 함수(2이상의 자연수에 대하여)
def is_prime_number(x):
    # 2부터 (x - 1)까지의 모든 수를 확인하며
    for i in range(2, x):
        # x가 해당 수로 나누어떨어진다면
        if x % i == 0:
            return False # 소수가 아님
    return True # 소수임

print(is_prime_number(4)) # 4는 소수가 아님
print(is_prime_number(7)) # 7은 소수임

 

  • 소수의 판별 : 개선된 알고리즘 → 속도가 기존 방식보다 빠름
'''
    틀림주의 
    - int(math.sqrt(x))+1 에서 int 해야함.
    - range는 2부터 시작.
'''

import math

# 소수 판별 함수
def is_prime_number(x):
    # 2부터 x의 제곱근까지의 모든 수를 확인하며
    # range함수가 마지막 숫자를 포함하지 않기에 +1함,
    # 제곱근만 확인해도 쌍을 이루기 때문에 가능한 이유임.
    for i in range(2, int(math.sqrt(x)) + 1): 
        # x가 해당 수로 나누어떨어진다면
        if x % i == 0:
            return False # 소수가 아님
    return True # 소수임

print(is_prime_number(4)) # 4는 소수가 아님
print(is_prime_number(7)) # 7은 소수임




def is_prime(n):
    if n < 2:
        return False
    for i in range(2, int(n**0.5) + 1):
        if n % i == 0:
            return False
    return True

print(is_prime(4)) # 4는 소수가 아님
print(is_prime(7)) # 7은 소수임