2023. 2. 20. 15:37ㆍ_Study/Baekjoon
- 23.02.20.
데이터 입출력
n = int(input())
data = list(map(int, input().split()))
import sys
data = sys.stdin.readline().rstrip()
print(f"{data}")
목차
- 리스트 컴프리헨션
- 언더바를 사용할 때
- 리스트 관련 기타 메서드
- 문자열, 튜플 자료형
- 사전 자료형
- 집합 자료형
- 데이터 입출력
- 빠르게 입력받기
- 조건문
리스트 컴프리헨션
: 2차원 리스트를 초기화할 때 효과적으로 사용될 수 있다.
N * M 크기의 2차원 리스트를 한 번에 초기화 해야 할 때 매우 유용하다.
array = [i for i in range(10)] #1D array
array0 = [0*i for i in range(10)] #1D array
arrayEven = [i for i in range(10) if i % 2 == 0] #1D array
array2D = [[0]* 5 for i in range(4)] #2D array
대괄호로 감싸도록 작성하여, 주소값으로 모두 같은 객체로 인식되지 않게 주의
언더바를 사용할 때
반복을 위한 변수의 값을 무시하고자 할 때 사용
for _ in range(5):
print("Hello!")
리스트 관련 기타 메서드
함수명 | 사용법 | 설명 | 시간 복잡도 |
append() | 변수명.append() | 리스트에 원소를 하나 삽입할 때 사용 | O(1) |
sort() | 변수명.sort() | 오름차순으로 정렬 | O(NlogN) |
변수명.sort(reverse=True) | 내림차순으로 정렬 | ||
insert() | insert(삽입할 위치 인덱스, 삽입 할 값) | 특정한 인덱스 위치에 원소를 삽입할 때 사용 | O(N) |
count() | 변수명.count(특정값) | 리스트에서 특정한 값을 가지는 데이터의 개수를 셀 때 사용 | O(N) |
remove() | 변수명.remove(특정값) | 특정한 값을 갖는 원소를 제거하는 데 값을 가진 원소가 여러 개면 하나만 제거 | O(N) |
문자열, 튜플 자료형
문자열 변수를 초기화 할 때는 큰따옴표나 작은 따옴표를 이용.
문자열 안에 큰 따옴표나 작은 따옴표가 포함되어야 하는 경우가 있음
-> 내부를 반대로 바꾸거나, 백슬래시(\)를 이용하면 큰따옴표나 작은 따옴표를 원하는 만큼 포함 가능
튜플 자료형
튜플 자료형은 리스트와 유사하지만 한 번 선언된 값을 변경할 수 없다.
리스트는 대괄호를 사용하지만, 튜플은 소괄호를 이용한다.
튜플은 리스트에 비해 상대적으로 공간 효율적
어떨 때 사용?
- 서로 다른 성질의 데이터를 묶어서 관리해야 할 때
-> 최단 경로 알고리즘에서는 (비용, 노드번호)의 형태로 튜플 자료현을 자주 사용
- 데이터 나열을 해싱(Hashing) 키 값으로 사용해야 할 때
-> 튜플은 변경이 불가능하므로 리스트와 다르게 키 값으로 사용될 수 있다.
- 리스트 보다 메모리를 효율적으로 사용해야 할 때
사전 자료형
data = dict()
data['사과'] = 'Apple'
print(data)
if '사과' in data:
print("사과가 있습니다.")
사전 자료형은 키(Key)와 값(Value)의 쌍을 데이터를 가지는 자료형
사전 자료형은 키와 값의 데이터를 쌍으로 가지며, 변경불가능한 자료형을 키로 사용
파이썬의 사전 자료형은 해시 테이블을 이용하므로, 데이터의 조회 및 수정에 있어서 O(1)의 시간에 처리 가능
사전 자료형에서는 키와 값을 별도로 뽑아내기 위한 메서드를 지원
- 키 데이터만 뽑아서 리스트로 이용할 때는 keys() 함수를 이용
- 값 데이터만을 뽑아서 리스트로 이용할 때는 values() 함수를 이용
data = dict()
data['사과'] = 'Apple'
data['딸기'] = 'Strawberry'
data['바나나'] = 'Banana'
print(data)
for key in data.keys():
print(key)
집합 자료형
dataset = set([1,1,2,2,3,3,3,4,5])
dataset2 = {1,1,2,2,3,3,3,4,5,11111,1234}
print(dataset)
print(dataset2)
존재여부를 확인하는데 유용
- 중복을 허용하지 않음
- 순서가 없음
- 리스트 혹은 문자열을 이용해서 초기화 할 수 있음 set() 함수 사용
중괄호안에 각 원소를 콤마로 구분하여 삽입하여 초기화 가능
데이터의 조회및 수정에 O(1) 시간 소요
add : 새로운 원소 추가
update : 새로운 원소 여러 개 추가
remove : 특정한 값을 갖는 원소 삭제
리스트나 튜플은 순서가 있어 -> 인덱싱을 통해 자료형 접근 가능
사전 자료형, 집합 자료형 순서가 없어 -> 인덱싱 불가, 키, 원소를 이용해 O(1) 시간복잡도 조회
데이터 입출력
input() 함수는 한 줄의 문자열을 입력 받는 함수
map() 함수는 리스트의 모든 원소에 각각 특정한 함수를 적용할 때 사용
- 공백을 기준으로 구분된 데이터를 입력 받을 때
list(map(int, input().split()))
- 공백을 기준으로 구분된 데이터의 개수가 많지 않다면, 단순히 다음과 같이 사용
a,b,c = map(int,input().split())
n = int(input())
data = list(map(int, input().split()))
빠르게 입력받기
사용자로부터 입력을 최대한 빠르게 받아야 하는 경우
sys 라이브러리에 정의되어있는 sys.stdin.readline() 메서드를 이용
Enter가 줄바꿈 기호가 입력되므로 rstrip() 메서드를 함께 사용
import sys
data = sys.stdin.readline().rstrip()
print(data)
print("줄바꿈 안쓰기", end=" ")
print(f"정답은 {data}")
조건문
pass 를 이용해 무시할 수 있어 나중에 작성할 수 있다.
score = 85
if score >= 80:
pass
else :
print("a<80")
0 < x < 20 과 같은 한 번에 계산이 가능하다.
'_Study > Baekjoon' 카테고리의 다른 글
[11004] K번째 수 #파이썬 #백준 #퀵정렬 (0) | 2023.04.04 |
---|---|
프로그래머스 숨어있는 숫자의 덧셈 (2) 파이썬 테스트 2,3,4,5,6,7 실패 해결 (0) | 2023.04.03 |
백준, 프로그래머스 자동 커밋, 자동 올리기, 동기화 잔디채우기, 빨간 체크 (2) | 2023.03.15 |
프로그래머스 파이썬 문자 반복 출력하기 (0) | 2023.02.24 |
프로그래머스 옷가게 할인 받기 13,14 case 오류 파이썬 (0) | 2023.02.24 |