1. 지문 읽기 및 컴퓨터적 사고
2. 요구사항 분석
3. 문제 해결을 위한 아이디어 찾기
4. 소스코드 설계 및 코딩
시간 제한에 따른 알고리즘 설계
- 파이썬 기본 라이브러리 시간 복잡도
https://wiki.python.org/moin/TimeComplexity
- round(변수, 위치) # 위치에서 반올림 수행
round(0.123456, 5) # 0.1235
- 리스트 컴프리헨션 : 리스트 초기화 방법
array = [i for i in range(5)] # [0, 1, 2, 3, 4]
array = [i for i in range(6) if i % 2 == 1] # [1, 3, 5]
array = [[0] * 열 for _ in range(행)] # 2차원 리스트 초기화 (행x열)
- 변수명.append() # 원소 하나 삽입 시 사용
- 변수명.sort() # 오름차순 정렬
- 변수명.reverse() # 원소 순서를 반대로 변경
- 변수명.insert(인덱스, 값) # 특정 위치에 값 삽입
- 변수명.remove(값) # 값을 가지는 원소 하나를 제거
- 리스트의 특정 원소 제거하기
a = [1, 2, 3, 4, 5, 5]
remove_set = {3, 5}
result = [i for i in a if i not in remove_set] # [1, 2, 4]
- list(변수명.keys()) # 딕셔너리의 키만 모아 리스트 형태로 출력하기 (default == 딕셔너리 형태로 반환)
- list(변수명.values()) # 딕셔너리의 값만을 모아 리스트 형태로 출력하기
- 집합 자료형 연산
# 집합 a와 집합 b가 있을 때,
print(a | b) # 합집합
print(a & b) # 교집합
print(a - b) # 차집합
- 집합의 추가/삭제
변수명.add(4) # 원소 추가
변수명.update([5, 6]) # 여러 개 원소 추가
변수명.remove(7) # 원소 삭제
- 입력
# 10 3
n, m = map(int, input().split()) # 입력받은 데이터를 각각 변수에 저장
# 1 2 3 4 5 6
data = list(map(int, input().split())) # 입력받은 데이터를 리스트에 저장
# z9
x, y = list(input()) # 붙어있는 문자열 받기
# 입력 부 자동 입력
import sys
sys.stdin = open("03-2.txt", "r")
- 출력
파이썬은 직접적으로 문자열, 숫자 등 서로 다른 형을 함께 출력할 수 없음
# print("word" + data + "word") # error
print("word" + str(data) + "word")
print(hello, end="/")
print(world)
# output = hello/world
- 람다식
함수를 선언 없이 간단하게 작성
# (lambda 파라미터: 결과)(파라미터)
print((lambda a, b: a+b)(4, 5)) # 10
- 리스트 튜플 정렬
list = [('a', 10), ('b', 20), ('c', 15)]
sorted(list, key=lambda x: x[1]) # list의 1번째 원소를 기준으로 정렬
list.sort(key=lambda x: x[1]) # list의 1번째 원소를 기준으로 정렬
- 서로 다른 리스트의 동일한 인덱스의 원소끼리 더하기
list1 = [1, 3, 5]
list2 = [2, 4, 6]
result = map(lambda a, b: a + b, list1, list2) # [3, 7, 11]
- 연산
sum([1, 2, 3]) # 6
min([1, 2, 3]) # 1
max([1, 2, 3]) # 3
eval("(1+2)//3") # 문자열을 계산 # 1
- 순열과 조합
순열(itertools.permutations) : 서로 다른 n개에서 r개를 선택하여 일렬로 나열 (CAB != CBA)
조합(itertools.combinations) : 서로 다른 n개에서 순서에 상관없이 서로 다른 r개를 선택 (CAB == CBA)
from itertools import permutations
from itertools import combinations
data = ['A', 'B', 'C']
result_p = list(permutations(data, 3))
result_c = list(combinations(data, 3))
- 최대 공약수, 최소 공배수
최대 공약수(math.gcd) : 공통된 약수 중에서 가장 큰 값
최소 공배수(math.lcm) : 공통된 배수 중에서 가장 작은 값
import math
a = 21
b = 14
print(math.gcd(21, 14)) # 7
print(math.lcm(21, 14)) # 42
- 문자가 문자열 내부에 존재하는지 여부 체크
for '문자' in 문자열_변수:
- 문자 아스키 코드 값으로 반환하기
int(ord('문자'))
※ 해당 포스트는 "이것이 코딩 테스트다 with 파이썬(나동빈 저)"를 통해 에디터가 학습한 내용이 포함되어 있습니다.
[코딩테스트] 이진 탐색 알고리즘 (0) | 2022.11.21 |
---|---|
[코딩테스트] 정렬 알고리즘 (0) | 2022.11.20 |
[코딩테스트] DFS/BFS 알고리즘 (0) | 2022.11.19 |
[코딩테스트] 구현 알고리즘 (0) | 2022.11.18 |
[코딩테스트] 그리디 알고리즘 (0) | 2022.11.17 |