본문 바로가기
● 알고리즘, 자료구조/2019 알고리즘

파이썬 기초. 리스트. 집합. 반복비교

by 0ver-grow 2019. 9. 25.
반응형

리스트


len(a) 리스트 길이(자료 개수)를 구한다 a = []
len(a)
append(x) 자료 x를 리스트의 맨 뒤에 추가  
insert(i,x) 리스트의 i번 위치에 x를 추가 a.insert(0,5) # 0번 인덱스에 5추가
pop(i) i번 위치에 있는 자료를 리스트에서 빼내면서 그 값을 함수의 결과값으로 돌림만약 i 미지정시 맨 마지막 값을 뺌 a.pop()
a.pop(0) # 0번 인덱스 출력되고 빠짐
clear() 리스트의 모든 자료 지움 a.clear() # 빈리스트됨
x in a 어떤 자료 x가 리스트 a안에 있는지 확인. (x not in a는 반대) a = [1,2,3]
2 in a
3 in a
4 in a

총합을 구하는 알고리즘

def sum(n) :
	return n*(n+1) // 2

 

제곱의 합을 구하는 알고리즘

def sum(n) :
	return n*(n+1)*(2*n+1) // 6

최댓값 구하는 알고리즘


n = [17,92,18,33,58,7,33,42]
def comparison(n) :
    len_n = len(n) # list는 int가 아니므로 길이를 나타내려면 len을 써야한다.
    max_n = n[0]
    for i in range(1,len_n) :
        if n[i] > max_n :
            max_n = n[i]
    return max_n, i
        
print(comparison(n))

n = [17,92,18,33,58,7,33,42]
def comparison(n) :
    len_n = len(n) # list는 int가 아니므로 길이를 나타내려면 len을 써야한다.
    max_n = n[0]
    for i in range(1,len_n) :
        if n[i] > max_n :
            max_n = n[i]
    return max_n, i
        
print(comparison(n))

최댓값의 위치 구하기

n = [17,92,18,33,58,7,33,42]
def comparison(n) :
    len_n = len(n) # list는 int가 아니므로 길이를 나타내려면 len을 써야한다.
    max_n = 0

    for i in range(1,len_n) :
        if n[i] > n[max_n] :
            max_n = i
    return max_n
        
print(comparison(n))

n = [17,92,18,33,58,7,33,42]
def comparison(n) :
    len_n = len(n) # list는 int가 아니므로 길이를 나타내려면 len을 써야한다.
    max_n = 0

    for i in range(1,len_n) :
        if n[i] > n[max_n] :
            max_n = i
    return max_n
        
print(comparison(n))

 

집합


집합은
같은 자료가 중복되어 들어가지 않고,
자료의 순서도 의미가 없다.
자동으로 순서가 정렬된다

len(s) 집합 길이 구함 len({1,2,3})
add(x) 집합 자료 x를 추가  
discard(x) 집합에 자로x가 있다면 삭제함
없으면 변화없음
s = {1,2,3}
s.discard(2)
claear() 집합 모든 자료 지움   
x in s 자료x가 집합s에 들어있는지 확인 s = {1,2,3}
5 in s
5 not in s

 

동명이인을 찾는 알고리즘

# 두 번이상 나온이름 찾기
# 입력 : 이름이 n개 들어있는 리스트
# 출력 : 이름 n개 중 반복되는 이름의 집합

def find_same_name(a) :
    len_a = len(a)
    same_name = set()
# 빠짐없이 비교하되 중복비교하지 않도록 작성
    # 내부값끼리 비교하는 것이므로 2중 for문
    for i in range(0,len_a-1) : # 모든 인덱스 비교
        for j in range(i+1,len_a) : # 비교안된 인덱스
            if a[i] == a[j] : # 인덱스의 값이 동일하다면
                same_name.add(a[i])
    return same_name

name = ["T","J","M","T"]
print(find_same_name(name))

# 두 번이상 나온이름 찾기
# 입력 : 이름이 n개 들어있는 리스트
# 출력 : 이름 n개 중 반복되는 이름의 집합

def find_same_name(a) :
    len_a = len(a)
    same_name = set()
	# 빠짐없이 비교하되 중복비교하지 않도록 작성
    # 내부값끼리 비교하는 것이므로 2중 for문
    for i in range(0,len_a-1) : # 모든 인덱스 비교
        for j in range(i+1,len_a) : # 비교안된 인덱스
            if a[i] == a[j] : # 인덱스의 값이 동일하다면
                same_name.add(a[i])
    return same_name

name = ["T","J","M","T"]
print(find_same_name(name))

 

반응형

'● 알고리즘, 자료구조 > 2019 알고리즘' 카테고리의 다른 글

순차탐색  (0) 2019.09.26
최대공약수 GCD 알고리즘. 유클리드.  (0) 2019.09.25
함수  (0) 2019.09.24
python 딕셔너리  (0) 2019.09.24
python switch  (0) 2019.09.24