[코딩 스터디] 1주차. 리스트 자료형

Hayoon·2022년 7월 23일
0

리스트 자료형

리스트는 코딩테스트 문제를 풀면서 꼭 활용이 되는 개념 중 하나입니다. 숫자, 문자 어떤 자료형이든 담을 수 있는 배열로서, 여러 개의 데이터를 연속적으로 담아 처리하기 위해 사용됩니다. C나 java처럼 프로그래밍 언어의 배열 기능을 포함하고 있으며, 연결 리스트 자료구조를 채택하고 있어서 append(), remove() 등의 메서드를 지원합니다.

리스트 만들기

리스트는 대괄호([]) 안에 원소를 넣어 초기화하며, 쉼표(,)로 원소를 구분합니다. 리스트의 원소에 접근할 때는 인덱스값을 괄호안에 넣는데, 이때 인덱스는 0부터 시작합니다. 그리고 비어 있는 리스트를 선언하고자 할 때는 list() 혹은 간단히 대괄호([])를 이용할 수 있습니다.
다음 코드는 1부터 9까지의 모든 정수 데이터를 담는 리스트를 만든 다음 특정한 인덱스의 원소에 접근하여 출력하는 예제입니다.

a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(a) #[1, 2, 3, 4, 5, 6, 7, 8, 9]

print(a[4]) #5

a = list() #[]
print(a) #[]

a[1:4](a[start index: end index - 1])라고 넣으면 앞서 말했듯이 리스트의 인덱스를 0부터 출발하기 때문에, 끝 인덱스의 1을 뺀 값의 인덱스까지 처리가 됩니다. (인덱스 1, 2, 3이 범위에 포함됩니다.)

a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(a[1:4]) # [2, 3, 4] 리스트 형식

리스트 컴프리헨션

리스트 컴프리헨션은 리스트를 초기화하는 방법 중 하나입니다. 리스트 컴프리헨션을 이용하면 대괄호 안에 조건문과 반복문을 넣는 방식으로 리스트를 초기화할 수 있습니다. 간단히 0~19까지의 수 중에서 홀수만 포함하는 리스트를 만들고자 할 때는 다음과 같이 리스트를 초기화 할 수 있습니다. 이 경우 한 줄의 소스코드로 리스트를 초기화 할 수 있어 간편합니다.

# 0부터 19까지의 수 중에서 홀수만 포함하는 리스트
array = [i for i in range(20) if i % 2 == 1]
#변수명 for 변수명 in range(Max) if 조건(condition)]

print(array) #[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
/**
	일반적인 코드
    			**/
array = []
for i in range(20):
	if i % 2 == 1:
    	array.append(i)
        
print(array)

###################################
array = [i * i for i in range(1, 10)]

print(array) #[1, 4, 9, 16, 25, 36, 49, 64, 81]

리스트 관련 기타 메서드


변수명.index(value): 해당 값의 인덱스를 반환
len(변수명): 리스트의 데이터 갯수 반환

a = [1, 4, 3]
print(a) #[1, 4, 3]

#리스트에 원소 삽입
a.append(2)
print(a) #[1, 4, 3, 2]

#오름차순 정렬
a.sort()
print(a) #[1, 2, 3, 4]


#내림차순 정렬
a.sort(reverse = True)
print(a) #[4, 3, 2, 1]

remove는 최초로 발견된 값만 제거가 되고, 시간 초과도(O(N))가 매우 크므로 사용유의.
백준문제를 풀다보면 문제 시간제한 1초라면 대략적인 추정치로약 1억번(10^8)의 계산을 할 수 있다.

Big (O)최대 입력크기
O(N)약 1억
O(N^2)약 1만
O(N^3)약 500
list = [1,3,5,5,7,7,8]
remove_set = {3, 5}

list = [i for i in list if i not in remove_set]
print(list) #[1, 3, 8]

리스트 관련 문제

BOJ 1(백준 11656 접미사 배열)> https://www.acmicpc.net/problem/11656
BOJ 2(백준 2562 최댓값)> https://www.acmicpc.net/problem/2562

출처: 이것이 취업을 위한 코딩테스트다 with 파이썬 (저자: 나동빈)
출처: https://www.inflearn.com/course/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EB%AC%B8%EC%A0%9C%ED%92%80%EC%9D%B4-%EC%BD%94%EB%94%A9%ED%85%8C%EC%8A%A4%ED%8A%B8

profile
Junior Developer

0개의 댓글