목록STUDY/Python (10)
컴공생 누르지 마세요! 컴공생 울어요.
1. 스택 LIFO (Last In First Out) 구조: 나중에 넣은 게 가장 먼저 나옴 (ex. 박스 쌓기) 기본 리스트에서 append()와 pop() 메서드를 이용하여 스택 자료구조 구현 가능 append() - 리스트의 가장 뒤쪽에 데이터 삽입 pop() - 리스트이 가장 뒤쪽에서 데이터를 꺼냄 stack = [] stack.append(5) stack.append(2) stack.append(3) stack.append(7) stack.pop() stack.append(1) stack.append(4) stack.pop() print(stack) # 최하단 원소부터 출력 print(stack[::-1]) # 최상단 원소부터 출력 # 실행결과: # [5, 2, 3, 1] # [1, 3, 2,..
1. 내장함수 별도의 import 명령어 없이 바로 사용할 수 있음 input(), print() 입출력 함수 제공 함수명 기능 예시 코드 sum() iterable 객체가 입력으로 주어졌을 때, 모든 원소의 합 반환 result = sum([1, 2, 3, 4, 5]) min() 파라미터가 2개 이상 들어왔을 때 가장 작은 값 반환 result = min(7, 3, 5, 2) max() 파라미터가 2개 이상 들어왔을 때 가장 큰 값 반환 result = max(7, 3, 5, 2) eval() 수학 수식이 문자열 형식으로 들어오면 해당 수식을 계산한 결과 반환 result = eval("(3 + 5) * 7") sorted() iterable 객체가 들어왔을 때 정렬된 결과 반환 key 속성으로 정렬 ..
입출력 입력 입력을 위한 전형적인 소스코드 # 데이터의 개수 입력 n = int(input()) # 각 데이터를 공백으로 구분하여 입력 data = list(map(int, input().split())) # 내림차순 정렬 data.sort(reverse = True) print(data) input() 하나의 문자열을 입력받는 함수 list(map(int, input().split())) input()을 통해 입력받은 문자열을 split()을 통해 공백으로 구분하여 리스트로 만듦 map()을 통해 리스트의 모든 원소를 int로 변환 list()를 통해 최종 리스트를 만듦 공백으로 구분된 데이터의 개수가 많지 않다면, 리스트로 만들지 않고 바로 변수에 넣을 수 있음 n, m, k = map(int, in..
함수 동일한 알고리즘을 반복적으로 수행해야 할 때 효율적으로 코드 작성 가능 기본 형태 def 함수명(매개변수): 소스코드 return 반환값 매개변수 함수 내부에서 사용되는 변수의 값을 전달받기 위함 retrun 함수에서 어떠한 값을 반환할 때 사용 매개변수나 return문은 존재하지 않을 수 있음. 인자를 넘겨줄 때, 값을 지정해서 넘겨줄 수 있음 이 경우 매개변수의 순서가 달라도 상관 X def add(a,b): print(a + b) add(b = 3, a = 2) global 키워드 함수 안에서 함수 밖의 변수 데이터를 변경해야 하는 경우 사용 global 키워드로 변수를 지정하면, 해당 함수에서는 지역 변수를 만들지 않고, 함수 바깥에 선언된 변수를 바로 참조하게 됨. 예시 a = 0 def ..
집합 자료형 리스트 or 문자열을 이용해서 만들 수 있음 다음과 같은 특징 존재 중복을 허용하지 않음 순서가 없음 사전 자료형과 집합 자료형은 순서가 없기 때문에 인덱싱 불가 특정 원소가 존재하는지 검사하는 연산의 시간 복잡도는 O(1) '특정한 데이터가 이미 등장한 적이 있는지 여부'를 체크할 때 효과적 집합 자료형의 초기화 set() 함수 이용 중괄호 {} 안에 각 원소를 콤마 , 를 기준으로 구분해서 넣음 data = set([1, 1, 2, 3, 4, 4, 5]) print(data) # 결과: {1, 2, 3, 4, 5} data = {1, 1, 2, 3, 4, 4, 5} print(data) # 결과: {1, 2, 3, 4, 5} 집합 자료형의 연산 합집합: | 교집합: & 차집합: - a =..
사전 자료형 키 key와 값 value의 쌍을 데이터로 가지는 자료형 우리가 원하는, 변경 불가능한 데이터를 키로 사용할 수 있음 변경 불가능한 데이터: 수 자료형, 문자열 자료형, 튜플 자료형처럼 한 번 초기화되면 변경이 불가능한 자료형 튜플 자료형도 가끔 사전 자료형의 키로 사용됨 내부적으로 해시 테이블 이용 -> 데이터의 검색 및 수정을 O(1) 시간에 처리 -> 리스트보다 훨씬 빠름 data = dict() data['사과'] = 'apple' data['바나나'] = 'banana' data['코코넛'] = 'coconut' print(data) # 결과: {'사과': 'apple', '바나나': 'banana', '코코넛': 'coconut'} 코테 문제에서 리스트보다 훨씬 적은 메모리 공간을..
튜플 자료형 리스트와 거의 비슷하지만, 아래와 같은 차이점 존재 차이점 1. 튜플은 한 번 선언된 값을 변경할 수 없음. 차이점 2. 리스트는 대괄호 ([])를 이용하지만, 튜플은 소괄호 (()) 이용 a = (1, 2, 3, 4) a[2] = 7 # 에러 발생 - 그래프 알고리즘 구현 시 자주 사용 ex) 다익스트라 최단 경로 알고리즘처럼 최단 경로를 찾아주는 알고리즘에서 사용되는 우선순위 큐에 한 번 들어간 값은 변경되지 않음. 이러한 우선순위 큐를 구현할 때 튜플을 사용함으로써 의도치 않은 값의 변경을 방지할 수 있음. - 리스트에 비해 상대적으로 공간 효율적 - 각 원소의 성질이 서로 다를 때 주료 사용 ex) 다익스트라 최단 경로 알고리즘에서는 (비용, 노드번호)의 형태로 서로 다른 성질의 데이..
문자열 자료형 문자열 초기화 - 큰따옴표 (") or 작은따옴표 (') 이용 - 문자열을 큰따옴표로 구성 -> 내부적으로 작은따옴표 사용 가능 - 문자열을 작은따옴표로 구성 -> 내부적으로 큰따옴표 사용 가능 - 이스케이프 문자인 백슬래시 (\)를 사용하여 내부적으로 큰따옴표 or 작은따옴표 사용 가능 data = "Hello \"World\"" print(data) # 결과: Hello "World" 문자열 연산 - 문자열 변수에 덧셈 (+) 이용 -> 문자열이 더해짐 - 문자열 변수를 양의 정수와 곱함 -> 문자열이 양의 정수만큼 반복 - 문자열 변수는 내부적으로 리스트와 같이 처리 -> 인덱싱 & 슬라이싱 이용 가능 a = "Hello" b = "World" print(a + b) # 결과: Hel..