프로그래밍/Python

[Python] 코딩테스트를 위한 파이썬

lazy man 2023. 3. 24. 11:42

1. 입력

  1) 정수 문자열을 리스트로 만들기

# 1. input()으로 문자열을 입력받은 후 split() 을 통해 공백으로 문자열을 잘라냄
# 2. map을 통해 각각의 문자열을 int형으로 변경함
# 3. list를 통해 int 자료형이 담긴 리스트 numbers 완성
# ex) 1 2 3 4 5 → [1,2,3,4,5]
numbers = list(map(int, input().split()))

 

  2) 정수 문자열을 변수에 각각 초기화하기

# 1. input()으로 문자열을 입력받은 후 split()으로 공백으로 쪼갬
# 2. map 함수를 이용하여 각각의 문자열에 int 적용
N, M = map(int, input().split())

 

  3) 빠르게 입력받기

import sys
input_data =[]
for i in range(10000000):
    sys.stdin.readline().rstrip()

 

2. 리스트 만들기

  1) 길이 1000의 리스트 만들기(Default = 0)

arr = [0 for i in range(1000)]

 

  2) 이차원 배열 만들기

# 5 x 10 이차원 배열
arr = [[0 for j in range(10)] for i in range(5)]

 

  3) 리스트 자르기

# [2, 3, 4, 5]
[1, 2, 3, 4, 5][1:]

# [2, 3]
[1, 2, 3, 4, 5][1:3]

# [4, 5]
[1, 2, 3, 4, 5][-2:]

 

3. 연산

  1) 2개의 리스트 요소 합

# 1. zip 함수 사용
# result = [6, 8, 10, 12, 14]
a = [1, 2, 3, 4, 5]
b = [5, 6, 7, 8, 9]
c = [x + y for x, y in zip(a,b)]
print(c)
 
# 2. index 사용
# result = [6, 8, 10, 12, 14]
a = [1, 2, 3, 4, 5]
b = [5, 6, 7, 8, 9]
c = [a[i] + b[i] for i in range(len(a))]
print(c)

 

 

4. 수학

  1) 두 점 사이의 거리 (x1, y1), (x2, y2)

import math
dist = math.sqrt(pow((x2-x1), 2) + pow((y2-y1),2))

 

  2) 두 원 사이의 접점의 수(x1, y1, r1), (x2, y2, r2)

    dist = math.sqrt(pow((x2-x1), 2) + pow((y2-y1),2))

    # 같은 원인 경우
    if x1 == x2 and y1 == y2 and r1 == r2:
        print(-1)
    # 포함 관계의 경우
    elif dist == abs(r1-r2):
        print(1)
    elif dist < abs(r1-r2):
        print(0)
    # 포함관계가 아닌 경우
    elif dist == r1+r2:
        print(1)
    elif dist < r1+r2:
        print(2)
    elif dist > r1+r2:

 

3) 3의 배수의 성질

    각 자릿수를 더한 값은 3의 배수이다

 

4) 약수 구하기

 

5. 자료구조

1) 우선 순위 큐

from queue import PriorityQueue
que = PriorityQueue()

que.put(2)
que.put(1)
que.put(3)

que.get() # 1
que.get() # 2
que.get() # 3

 

6. 데이터 변환

1) deque to list

my_list = list(queue)

 

 

2) 정수형 list to str

# my_list = [1, 2, 3]  result = 123
''.join(str(s) for s in my_list)