리스트에서 데이터 추가
append()
리스트의 맨 끝에 데이터 추가
my_list = [1,2,3]
my_list.append(4) #[1,2,3,4]
+ 연산자로 데이터 추가
my_list = [1,2,3]
my_list = my_list + [4,5] #[1,2,3,4,5]
insert()
insert()메서드로 데이터 삽입
insert(삽입할 위치, 삽입할 데이터)
my_list = [1,2,3,4,5]
my_list.insert(2,9999) #[1, 2, 9999, 3, 4, 5]
리스트에서 데이터 삭제
pop()
pop()메서드로 인덱스를 인수로 받아 삭제하고, 삭제한 데이터의 값을 반환
my_list = [1,2,3,4,5]
popped_element = my_list.pop(2) #3
print(my_list) #[1,2,4,5]
remove()
remove()메서드로 특정 데이터 삭제
인수로 받은 값이 처음 등장하는 위치의 데이터를 삭제
my_list = [1,2,3,2,4,5]
my_list.remove(2) # [1,3,2,4,5]
리스트 컴프리헨션으로 데이터에 특정 연산 적용
기존 리스트를 기반해 새 리스트를 만들거나 반복문, 조건문을 이용해 복잡한 리스트를 생성하는 등 다양한 상황에서 사용 가능
제곱 연산 적용 예
numbers = [1,2,3,4,5]
squares = [num**2 for i in numbers] #[1,4,9,16,25]
#numbers 는 여전히 [1,2,3,4,5]
numbers의 값 자체는 동일하며 바뀌지 않는다. 리스트 컴프리헨션은 연산이 끝난 리스트를 반환할 뿐이지 연산 대상 리스트를 바꾸지 않는다.
index()
특정 데이터가 처음 등장한 인덱스 반환
sort()
- 사용자가 정한 기준에 따라 데이터를 정렬
- 정렬된 값을 반환하지 않고 원본 리스트를 정렬
아무런 인수도 전달하지 않으면 오름차순으로 데이터를 정렬한다. 만약 reverse=True라는 기준을 인수로 전달하면 내림차순으로 정렬한다.
fruits.sort(reverse = True) #내림차순 정렬
count()
특정 데이터의 개수를 반환
enumerate()
인덱스와 원소에 동시 접근
>>> for i, letter in enumerate(['A', 'B', 'C'], start=101):
... print(i, letter)
...
101 A
102 B
103 C
정수 배열을 정렬해서 반환하는 solution 함수
def solution(arr) :
arr.sort()
return arr
def solution(arr):
sorted_list = list(sort(arr))
return sorted_list
Q. 만약 sort() 메서드를 사용하지 않고, O(N^2) 정렬 알고리즘을 사용한다면?
format()
문자열 형식화 메서드
다양한 데이터 유형을 문자열에 삽입하고 형식을 지정할 수 있다.
# 소수점 이하 자릿수를 지정하여 형식화
num = 3.141592653589793238
formatted_num = format(num, ".2f")
print(formatted_num) # 출력: 3.14
또는 여러 개의 값을 형식화하여 문자열에 삽입
name = "Alice"
age = 30
formatted_string = "이름: {}, 나이: {}".format(name, age)
print(formatted_string) # 출력: 이름: Alice, 나이: 30
외에 다양한 옵션을 제공
시간 계산 코드
#using O(N^2)정렬 알고리즘
import time
#버블 정렬 : 인접한 두 요소를 비교하면서 작은 값을 왼쪽으로 이동
def bubble_sort(arr):
n = len(arr)
for i in range(n):
for j in range(n - i - 1):
if arr[j] > arr[j + 1]:
arr[j], arr[j + 1] = arr[j + 1], arr[j]
return arr
def do_sort(arr):
arr.sort()
return arr
def measure_time(func, arr):
start_time = time.time()
result = func(arr)
end_time = time.time()
return end_time - start_time, result
arr = list(range(10000))
# 첫 번째 코드 시간 측정
bubble_time, bubble_result = measure_time(bubble_sort, arr)
print("버블 정렬 실행 시간 : ", format(bubble_time, ".10f"))
# 두 번째 코드 시간 측정
arr = list(range(10000))
reverse_time, reverse_result = measure_time(do_sort, arr)
print("두 번째 코드 실행 시간 : ", format(reverse_time, ".10f"))
# 두 개의 코드가 결과가 동일한지 확인
print("두 개의 코드의 결과가 동일한지 확인: ", bubble_result == reverse_result)
결과 :
버블 정렬 실행 시간 : 3.8462228775
두 번째 코드 실행 시간 : 0.0000808239
두 개의 코드의 결과가 동일한지 확인: True
압도적으로 sort() 함수가 성능이 좋다는 는 것을 알 수 있다
Q. 배열의 중복값을 제거하고 데이터를 내림차순으로 정렬해서 반환하는 함수 작성
set()
집합을 생성하는 내장 함수, 집합은 중복값을 허용하지 않으므로 문제에서 요구하는 중복 문제를 한 번에 해결할 수 있다.
def solution(lst):
unique_lst = list(set(lst))
unique_lst.sort(reverse=True)
파이썬에는 코딩테스트에 유용한 함수가 많다. 굳이 직접 작성하려 하지 말자.
'알고리즘' 카테고리의 다른 글
[코딩테스트 합격자 되기 05] 배열 (0) | 2024.09.01 |
---|---|
[코딩테스트 합격자 되기 04] 코딩 테스트 필수 문법 : Q&A (0) | 2024.08.25 |
[코딩테스트 합격자 되기 04] 코딩 테스트 필수 문법 (0) | 2024.08.25 |
[코딩테스트 합격자 되기 03] 알고리즘 효율 분석 : 시간복잡도와 빅오 표기법 (0) | 2024.08.24 |
[백준] 2606 바이러스 Node.js (0) | 2023.09.23 |