[Python] 리스트 컴프리헨션, 초기화, 언더바 사용, 사전, 집합 자료형, 데이터 입출력, 빠르게 입력받기 등 코딩테스트를 위한 모음

2023. 2. 20. 15:37_Study/Baekjoon

728x90

- 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 과 같은 한 번에 계산이 가능하다.